问题描述
- c语言中' n',与' '的区别?
-
今天没事写了段代码。
#include
main()
{
int c;
while(c=getchar())!='n'
putchar(c);
}
这里只能输入输出一次,就退出循环了。
而我这样写
将while(c=getchar())!='n'改为while(c=getchar())!=''
这样就可以多次循环输入输出了而我又将上面的改为while(c=getchar())!=EOF
则不能输出了。
请问这几个是为什么?
谢谢!
解决方案
首位是n,每次结束输入都会按Enter,因此循环也就执行一次;而是字符串的结束符,而又无法从键盘输入,因此可以无限输入输出;
EOF,没有实验过用它作输入结束标志,EOF是ctrl+z,输入字符之后按Ctrl+z,会产生这个值。
其次,你的循环应该写错了,while((c=getchar())!='n'),再实验一次试试
#*#
是字符串结束符,即零,从键上是无法输入的
EOF,是 End Of File 的缩写,其值好像是 -1,你也是无法从键上输入的。你所谓的不能输入,是什么情况,不太清楚。
#*#
http://blog.csdn.net/lichengyu/article/details/41621099
#*#
这个我知道,我想问为什么会出现上述情况。谢谢!
#*#
''永远不会执行到,因为你不会输入这个字符的,n是回车
#*#
感觉你是对那些概念不清楚,建议你去看看书
#*#
是字符串结束符,无法从键盘上进行输入,而n是回车
#*#
默认我们从键盘输入的数据流是字符流(控制信号是特殊的字符数据),而字符数据有其规范ASCII。我们用一些特殊的字符作为数据流的分割,比如这里的‘n’(ASCII0x10),‘’(0x00)。
‘n’(0x10)代表回车可以由键盘上回车键输入;
‘’(0x00)是空字符无法由键盘输入,我们从键盘数字区输入“0”字符对应ASCII是0x30,从键盘输入“空格”键对应的ASCII是0x20;
‘EOF’ASCII代码值的范围是0~255,不可能出现-1,因此可以用EOF作为文件结束标志,通过组合键“Ctrl+z”可以产生‘-1’这个值。~
#*#
你的while循环写错了吧,应该是这样while(c=getchar()!='n')
#*#
#include
int main(void)
{
int c;
while(c=getchar() != EOF)
putchar(c);
return 0;
}