输入问题是不是输入一串字符时,按回车把字符输到
一个关于C语言的输入问题
是不是输入一串字符时,按回车把字符输到缓冲区时在最后加上了一个\N?
应为 while((c=getchar())!='\n')
{
printf("%c",c);
}
是在遇到换行符才结束.那一定是系统自己在我输的一串数后加了换行符?
还有为什么我去掉((c=getchar())的括号,变成while(c=getchar()!='\n')
输出结果不正确?
应该分清楚getchar和scanf对输入的处理, 同样对按回车键, getchar会把'\n'输入到缓冲区,而scanf对回车理解为结束输入(如同按空格),不把'\n'传入缓冲.所以,我觉得如果这样写是可以的:
char c;
while ((c=getchar())!='\n')
printf("%c", c);
而对c字符数组, 如char c[100];
编译
器对越界不会作检查,使用时为了知道在何处结束,它会加上一个'\0'在末尾,这样的话,如果判断是否结束的话就应该用 != '\0' 了.
forfun | 07-04-24
是不是输入一串字符时,按回车把字符输到缓冲区时在最后加上了一个\N?
不是加\N,那是表示输入结束
字符串结束是\0
为什么scanf("%s",c),输入CHINA系统在后面+的是\0 而不是\N?
字符串结束是\0和上面一样
还有为什么我去掉((c=getchar())的括号,变成while(c=getchar()!='\n')
!=优先级高于=所以要先算!=
因为它是字符串,所以要加\0