gpt4 book ai didi

c - getc 在文件结束后应该停止时正在打印垃圾

转载 作者:行者123 更新时间:2023-12-04 01:54:13 25 4
gpt4 key购买 nike

程序有什么问题?

#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++);
}
}

最佳答案

正如@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

关于c - getc 在文件结束后应该停止时正在打印垃圾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17017452/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com