该计划有什么问题?
#include<stdlib.h>
#include<stdio.h>
#include<fcntl.h>
main( )
{
char * buf="robot.c";
char c;int i=0;
FILE*fp=fopen(buf,"r");
if(!fp)
printf("open error\n");
while(1)
{
//printf("size%c\n",*fp->_IO_read_ptr);
//while((c=getc(fp))>0)
c=getc(fp);
printf("%c",c);
//getc(fp);
//printf("new size%c\n",*fp->_IO_read_end);
for(;i<1000000000;i++);
}
}
答案 0 :(得分:6)
正如@Barmar注意到的那样,当找到EOF时,你不会检查并打破while循环,所以它是printf垃圾。
相反,写下你的喜欢:
while((c=getc(fp))!=EOF){
printf("%c",c);
for(;i<1000000000;i++);
}
注意:c
必须为int才能保留EOF值。
非常好阅读:Definition of EOF and how to use it effectively