摘要: 在这里,大家可能有一个误区,认为eof()返回true时是读到文件的最后一个字符,其实不然,eof()返回true时是读到文件结束符0xFF,而文件结束符是最后一个字符的下一个字符。如下图所示:因此,当读到最后一个字符时,程序会多读一次(编译器会让指针停留在最后一个字符那里,然后重复读取一次,这也就是就上面最后一个字符会输出两次的原因。至于是不是所有的编译器都这样处理我就不太清楚了,我使用的VC6,VC8似乎都是这样的)解决办法:1.提前读一个出来,eof标志是在最后一次读取数据时置位的,这一次并没有读数据,所以你不应该输出数据。对输入流的状态的检测应该紧跟在输入操作之后,不应该对输入失败的进 阅读全文
posted @ 2013-04-08 13:18 bugless6481 阅读(264) 评论(0) 推荐(0) 编辑
摘要: 为了相对透彻的了解C程序运行期的初始化顺序,首先介绍一些名词定义。用过Java的同志都知道, Java是一种跨平台语言。真的是所有的平台都能自如的运行Java程序吗?当然不可能。运行它的前提是你需要安装Java Run-time(JRE)。C语言也需要自己的运行期类库,windows系统正好支持这种类库,所以C++程序可以顺利的在windows系统上运行了。这个类库叫C Run-time(CRT), CRT这个名词可能并不陌生,大家在很多地方都看见过它。它建立了C程序运行环境。有些同志可能想过这样的问题。C程序怎么找到main函数的呢?其实是CRT执行了你的main函数或者WinMain函数的 阅读全文
posted @ 2013-04-08 10:28 bugless6481 阅读(480) 评论(0) 推荐(0) 编辑
关注我的博客