Я пытаюсь написать пользовательскую функцию на C, которая будет объединять две строки. До сих пор я придумал:
char *strcat406(char *str1, char *str2) {
int str1length = 0;
int str2length = 0;
char newStr[str1length + str2length];
int i;
for (i = 0; i < str1[i] != '\0'; i++)
str1length += 1;
for (i = 0; i < str2[i] != '\0'; i++)
str2length += 1;
for (i = 0; i < str1[i] != '\0'; i++)
newStr[i] = str1[i];
for (i = i; i < str2[i] != '\0'; i++)
newStr[i] = str2[i];
return newStr;
}
Я считаю, что код должен работать, за исключением строки, которая читает return newStr;
, Xcode выдает мне ошибку, которая гласит: «возвращен адрес памяти стека, связанный с локальной переменной (x)», и я думаю, что именно поэтому я не печатаю массив строк в основном, как я хочу.
Из моего исследования кажется, что это происходит потому, что память для возвращаемого массива освобождается, и поэтому я получаю результат, который мне не нужен, хотя я не нашел ни одного ответа на этом сайте или даже в документации C, которая работал на меня.
Как я могу изменить свою функцию, чтобы она возвращала конкатенацию двух строк?
though I have not found a single answer on this site or even in the C manual that has worked for me.
...скажите, почему я не верю в это... - person Sourav Ghosh   schedule 15.04.2016for
остановится слишком рано. - person Jongware   schedule 15.04.2016