Почему '\ 0' был добавлен в следующую программу? - PullRequest
0 голосов
/ 29 сентября 2019

Мне сказали, что нулевой символ или 100 '\0' служит для определения конца строки.

Но я в тумане, поскольку до сих пор сталкивался с двумя программами, в котором не использовалось то же самое (нулевой символ).

Все три программы имеют дело с strlen(), и я не могу экстраполировать его значение и / или присутствие в этой.

char st[20], rst [20]; // Edit: Added these string declarations!
int i, j;
printf("\n Enter the string : ");
scanf("%s",st);
i= 0;
j = strlen(st) - 1;
while (j >= 0)
{
    rst[i] = st[j];
    i++;
    j--;
}
rst[i] = '\0';
if(strcmp(st, rst) == 0)
    printf("\n %s is a palindrome string", st);
else
    printf("\n %s is not a palindrome string", st);

И похоже, что включение или исключение нулевого символа не влияет на результат.

Но мне любопытно, почему автор может счесть необходимым добавить его.

1 Ответ

1 голос
/ 29 сентября 2019

Включение нулевого символа гарантирует, что вторая строка оканчивается нулевым символом, поэтому результат будет правильным.

Даже если есть вероятность, что вторая строка будет сначала инициализирована со всеми нулями, это означает, что вам не нужно присваивать нулевой символ. Но обычно вы не можете предсказать, каково содержимое строки st, когда вы только что выделили память.

...