C语言 字符串 编程 输入字符结束时赋值✀尀0✀

2024-11-18 05:54:10
推荐回答(4个)
回答1:

这是因为字符串是以‘\0'做为结束标志的。在内存中,比如字符串,“abc",实际上是四个字节的空间abc'\0'。
在你的程序中:
while((s[i]=getchar())!='\n')
i++;
s[i]='\0';
前面的while只是得到了字符串的字符,而没有结束标志。
如果没有最后一句s[i]='\0';
你的字符就不能正确结束。如果打印,可能是一大串的乱码。只看你字符串存储空间后面的是什么值。

回答2:

while((s[i]=getchar())!='\n')
      i++;   //这两句是完成数据输入,每输入一个,i就会加1,直到遇到输入回车符
      
s[i]='\0'; //一、这句不是while循环的内容,二、此功能为:将回车符变成字符串结束符(只是针对数组的某一位进行操作,而不是改变整个数组内容),你这个代码中可见,回车符不是你想要的数据,只是输入结束的一个判断值。

回答3:

表示这个之后的字符都不是这个字符串的。
也就是说,整个字符串内容只是从开头到'\0'
比如:char s[10]="123";
printf("%s",s);//是123
s[1]='\0';
printf("%s",s);//是1
另外,如果'\0'之后还有其他字符,则全部忽略,这是一种策略,c风格字符串就是这样。
如果你忘了加(一般系统帮你加),程序会崩溃

回答4:

‘\0'是字符串结束符,字符串处理函数遇到该标志时,就会停止处理。
比如在这段代码中,输入abcda回车,s[5] = '\0'; 字符处理函数strlen(s) == 5,如果不置该值,这类函数就会异常,严重时,会系统崩溃。