微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用while!feof和终止条件,仍然是在c中无限循环

我正在编写一个图书馆pipe理系统的程序,作为我在c中的项目。 我使用了一个while循环和!feof条件来检查文件的book 。 既然我读了,我们不应该使用它,如果我们必须的话,我们应该做一些rest陈述,也因为我正在阅读大号。 来自文件的variables,我用found来打破while循环。 每当Target和book.bname匹配时(使用strcmp ), found被设置为1,while循环将被终止。 这是我在这代码背后使用的逻辑。 这里book是book.bname是其中的一个结构。 我正在使用这个程序的Linux操作系统。 请告诉我我错在哪里?

void Searchbook() { int i; char Target[25],stats[3]; int Found=0; if((librecord=fopen("librecord.txt","r"))==NULL) printf(" ! The File is Empty...nn"); else { printf("nEnter The Name Of Book : "); scanf("%s",Target); while(!feof(librecord)&& Found==0) { fscanf(librecord,"%d %s %s %d %d",&book.bid,book.bname,book.author,&book.status,&book.nooftitles); if(strcmp(Target,book.bname)==0) Found=1; for(i=0;i<book.nooftitles;i++) fscanf(librecord,"%s",book.titles); } if(Found) { if(book.status==IN) strcpy(stats,"IN"); else strcpy(stats,"OUT"); printf("nThe Unique ID of The Book: %dnThe Name of Book is: %snThe Author is: %snThe Book Status:%snn",book.bid,stats); } else if(!Found) printf("! There is no such Entry...n"); fclose(librecord); } }

这是我input书名后面临无限循环的一个function。 它进入一个无限循环打印遇到的第一本书的名字。 我该怎么办? 我的问题是不同于其他类似的问题,因为我使用两个条件,而不是只有!feof 。 我正在使用一个variable作为一个flag即使while loop没有终止。

在Windows cmd中查找两个文本文件的交集

readdir之后为什么stat不工作?

文件操作:脚本问题

如何以编程方式设置文件标签

无法为我的崩溃的程序创build一个核心文件

你没有阅读文件中的下一行,因为你根本没有前进。 您需要使用fgets从文件fgetc读取字符串来读取字符。 当读取一个新的行字符时, fgets自动停止,这样可以成为一次读取一行的解决方案。 如果您使用C库的GNU版本,另一个解决方案是使用[getLine]( http://man7.org/linux/man-pages/man3/getdelim.3.html )为您读取一行。

无论你使用什么,你需要读一行,然后移动到下一行,直到到达结尾,这不是你正在使用你当前的代码

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐