Я хотел передать элементы из строки в другую строку, поэтому написал следующую программу. Первоначально я думал, что цикл for должен выполняться до тех пор, пока не будет скопирован символ NULL (включая его, т.е.). Но в этом коде цикл for завершается, если был найден символ NULL (то есть еще не скопированный), но он все еще может отображать строку, в которой были скопированы элементы. Как это возможно, если изначально нет символа NULL?
#include<stdio.h>
#include<stdlib.h>
int main()
{
char temp[100], str[100];
fgets(str, 100, stdin);
int i;
for(i = 0; str[i]!='\0'; i++)
{
temp[i] = str[i];
}
puts(temp);
return 0;
}
NULL— это макрос с константой нулевого указателя. Здесь это не имеет значения. Вы имеете в виду символ ASCIINULилиnulс целочисленным значением0. - person too honest for this site   schedule 20.02.2016strcpy. - person Pete Becker   schedule 20.02.2016strcpyне поможет добиться такого понимания. - person Tersosauros   schedule 20.02.2016putsнашлаNUL. Такое поведение НЕ гарантируется и (как говорят ответы) является неопределенным поведением. - person Tersosauros   schedule 20.02.2016strcpy), или это студент, который, как ожидается, столкнется с (а) определенной проблемой (проблемами) - т.е. подготовиться к какому-то заданию или лекции и т.д. - person Tersosauros   schedule 20.02.2016