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

#include<stdio.h>
int main(void){
int i,n,m;
char s[10];
printf("Enter a string:");
i=0;
while((s[i]=getchar())!='\n')
i++;
s[i]='\0';
for(n=0,m=i-1;n<m;n++,m--)
if(s[n]!=s[m])
break;
if(n>=m)
printf("It is a plalindrome\n");
else
printf("It is not a plalindrome\n");

return 0;
}

while语句循环结束后s[i]='\0'语句的效果是什么,不是整个数组变ASCII码0的字符了吗,干嘛要加这样一个语句

这是因为字符串是以‘\0'做为结束标志的。在内存中,比如字符串,“abc",实际上是四个字节的空间abc'\0'。
在你的程序中:
while((s[i]=getchar())!='\n')
i++;
s[i]='\0';
前面的while只是得到了字符串的字符,而没有结束标志。
如果没有最后一句s[i]='\0';
你的字符就不能正确结束。如果打印,可能是一大串的乱码。只看你字符串存储空间后面的是什么值。
温馨提示:内容为网友见解,仅供参考
第1个回答  2014-08-27
while((s[i]=getchar())!='\n')
      i++;   //这两句是完成数据输入,每输入一个,i就会加1,直到遇到输入回车符
      
s[i]='\0'; //一、这句不是while循环的内容,二、此功能为:将回车符变成字符串结束符(只是针对数组的某一位进行操作,而不是改变整个数组内容),你这个代码中可见,回车符不是你想要的数据,只是输入结束的一个判断值。

本回答被提问者采纳
第2个回答  2014-08-27
表示这个之后的字符都不是这个字符串的。
也就是说,整个字符串内容只是从开头到'\0'
比如:char s[10]="123";
printf("%s",s);//是123
s[1]='\0';
printf("%s",s);//是1
另外,如果'\0'之后还有其他字符,则全部忽略,这是一种策略,c风格字符串就是这样。
如果你忘了加(一般系统帮你加),程序会崩溃
第3个回答  2014-08-27
‘\0'是字符串结束符,字符串处理函数遇到该标志时,就会停止处理。
比如在这段代码中,输入abcda回车,s[5] = '\0'; 字符处理函数strlen(s) == 5,如果不置该值,这类函数就会异常,严重时,会系统崩溃。

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

C语言中!='\\0' 是什么意思
!='\\0'.就是运行到字符串结尾时结束。!的意思是非,亦可以理解成不。‘\\0’是字符串的结束符号,由编译器自动加上。比如说,把一个字符串赋值给数组:u8 str1[]={"cxjr.21ic.org"};实际上数组str1在内存中的实际存放情况为: c x j r . 2 1 i c . o r g '\\0' 这后面的'\\0...

关于C语言字符数组的赋值最后自动添加‘\\0’问题
c[5]只有5个空间无法完全容纳字符串"hello",因为这个字符串需要占用6个字符位置。所谓自动加'\\0'的问题是:你写在双引号中的,编译程序会认为是字符串,会自动为你添加上一个字符串结尾符号0,而不是运行时添加的。如果你用debug方式运行程序,调试环境自动会把你开设的char a[5];进行初始化0的...

C语言中如何在字符串中加入结束标志\\0?
直接给最后一个单元赋值'\\0'即可,在char s[20]中,s[19] = '\\0';即可。

c语言中'\\0'是什么意思
在C语言中,!='\\0' 是没有结束的意思。其中,!=是关系运算号,\\0(空字符)是字符串的结束码。例如:char s[] = "10";printf("%s\\n", s);printf("s[1]:%d\\n", s[1]);printf("s[2]:%d\\n", s[2]);printf("s[1]:%c\\n", s[1]);printf("s[2]:%c\\n", s[2]);...

C语言中s[i]!='\\0'有什么作用?
s[i]!='\\0'一般为创建一个字符串数组后,判断字符串是否输入完毕,常用在循环或者判断语句。C语言中,字符串可以赋值给字符指针变量,或者将字符串用字符数组保存。因为c语言没有直接对字符串提供语法方面的支持。而且C标准库很多方法处理字符串是以空字符结尾为前提的,这个必须要记住。

c语言中为什么字符数组要加\\0?
原因,没有定义字符数组长度给它进行每个元素赋值,要手动加上终止符'\\0'用字符串时则不需要,c系统会自动在末尾加'\\0'解决后:

C语言中‘\\0’代表什么意思?
'\0'是判定字符数组结束的标识,表示这串字符到结尾了;或'\0'是字符串的结束符,任何字符串之后都会自动加上'\0'。注意:在字符数组中’\0’是占一个位置的。C语言是一门面向过程、抽象化的通用程序设计语言,广泛应用于底层开发。C语言能以简易的方式编译、处理低级存储器。C语言是仅...

C语言中t[j]='\\0'是什么意思?
'\\0'在c语言中表示字符串的结束符,在c语言处理字符串时,例如printf("%s",ss);时,它是从给出的ss的首地址开始,直到遇到字符串的结束符'\\0'结束,如果我们给字符数组赋值是,若没有特意加上这个结束符,输出字符串时,可能会输出乱码。

C语言中\\=是什么意思
!的意思是非,亦可以理解成不,‘\\0’是字符串的结束符号,由编译器自动加上。比如,把一个字符串赋值给数组:u8str1[]={"cxjr。21ic。org"};实际上数组str1在内存中的实际存放情况为:cxjr。21ic。org'\\0'这后面的'\\0'是由C编译系统自动加上的。所以在用字符串赋初值时一般无须指定数组...

相似回答