为什么在以下程序中添加了“ \ 0”?

时间:2019-09-29 20:31:35

标签: c string null-character

有人告诉我空字符或‍ '\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 个答案:

答案 0 :(得分:1)

包含空字符可确保第二个字符串以空字符结尾,因此结果将是正确的。

即使第二个字符串有可能首先以全零开头启动,这也意味着您不必分配空字符。但是通常情况下,刚分配内存时,您无法预测st字符串的内容。