Я попытался устранить эту проблему и просто ничего не получил, надеюсь, вы можете намекнуть мне в правильном направлении. У меня есть программа, где я инициализирован массив символов таким образом:Сбой программы C после strcpy
char variable1[8];
И тогда я пытаюсь скопировать возвращаемое значение из функции т.е.
...
strcpy(variable1, (char *)function1());
Где function1() возвращает значение обугленного массива. Вот структура function1:
char* function1()
{
....
char variable2[8]={'\0'};
...
return (variable2);
}
Программа падает, когда я пытаюсь выполнить STRCPY линию.
Я прочитал на функции STRCPY here что
Важно: Вы должны убедиться, что буфер назначения (s1) может содержать все символы в исходном массиве, включая завершающий нулевой байт. В противном случае, зЬгср() будет перезаписывать память мимо конца буфера, вызывая переполнение буфера, что может привести к взрыву программы
Поэтому я попытался увеличить размер Variable1 до 20, но до сих пор программных сбоев.
Помимо этого, я пробовал использовать другой подход. Я использую вызов функции strncpy, и он по-прежнему дает мне ту же ошибку.
Странно, что я мог выполнить функцию1(), которая возвращает значение без проблемы. Только когда я попытался скопировать его, моя программа выйдет из строя. Любые идеи, что я должен делать дальше?
Узнайте, как использовать отладчик. И спросите у компилятора все предупреждения, которые он может вам дать (например, 'gcc -Wall -Wextra'), затем улучшите исходный код, пока не будут указаны предупреждения. –