Я использовал этот код, чтобы соединить две строки в C:«Stack Smashing обнаружен» при конкатенации строк в C
int main(int argc, char** argv) {
char a[] = "hello ";
char b[] = "world";
concat(a, b);
printf("%s\n", a);
return (EXIT_SUCCESS);
}
void concat(char s[], char t[]){
int i, j;
i = j = 0;
while (s[i] != '\0') i++;
while ((s[i++]=t[j++]) != '\0');
}
Строка была каскадной правильно, но следующая строка в выводе был:
*** stack smashing detected *** [...] terminated
Почему этот код был обнаружен как разбитый стек?
Если вы пишете C, то почему вы использовали тег C++? И где ваш [MCVE]? И как '' 'достаточно места для содержимого' a' и 'b'? –
'a' не хватает места для хранения новой строки – ForceBru