关于回车,换行,EOF

[b][size=large]回车换行[/size][/b]:
http://www.cnblogs.com/faraway/archive/2009/03/05/1403649.html
这位大哥解释的很清楚。

我整理下:
三种系统的行结尾:
Windows: <回车><换行> “\r\n” 0x0d0x0a; //顺序不能错。
Mac : <回车> “\r” 0x0d;
Linux : <换行> “\n” 0x0a;

编程的时候,不管哪种系统,C语言标准输出流只要输入“\n”就可以换行了。
Linux 下 getchar() 捕捉的Enter键的Ascii为 0x0a.

[size=large][b]EOF[/b][/size]
EOF文档的结束符。在Linux下输入ctrl+d(window下:Ctrl+z,还要加一个回车)即视为输入一个EOF。[color=red]但是EOF一般是作为一个文档结束的信号来处理的,文档中并没有存EOF[/color]


http://hi.baidu.com/shichaotansc/blog/item/cf0af7af779665fcfbed50cd.html
这文章写的有问题。并不是EOF不产生编码,而是EOF应该是个为-1的宏。
用getchar()捕捉的ctrl+d (linux下)的Acsii码为0xff.

[/code] 
int ch;
ch =getchar();
while (ch != '#') //这样可以捕捉EOF,而不是遇到EOF就结束
{
fputc(ch ,fp);
ch = getchar();
}
//运行时输入:ctrl+d,#
//16进制查看文件,testtxt为输出文件
od -t x1 testtxt

//结果
0000000 ff
0000001


当判断条件为:
while ( ch !=EOF)
{
....
}
关于终端为什么要两次ctrl+d才能结束输入,这里有详细的讨论
http://bbs.chinaunix.net/viewthread.php?tid=981231&extra=&page=1

总结下就是因为:终端的设置问题。
另外
char c;
while((c = getchar()) != EOF)
http://www.c-faq.com/stdio/getcharc.html
这种写法会引发BUG。

http://bbs.chinaunix.net/thread-233220-1-1.html
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值