繁体   English   中英

循环 fscanf 导致额外的循环(C 语言)

[英]Looping fscanf causing additional loops (C language)

我在循环 fscanf 时遇到问题。 在下面的代码中(关注 while 循环开始的部分),我循环 fscanf 直到它到达 EOF。 从下面的第二部分可以看出,fscanf 的 .txt 文件只有 6 个字符串,因此 fscanf 应该只循环 6 次然后到达 EOF。 但是,正如您从程序 output(以下第 2 部分)中看到的那样,fscanf 循环了 7 次。 由于我的程序以相反的顺序显示导弹名称,我假设 while 循环最后再循环 1 次,导致第三张图片第一行的空白行 output。

有人可以告诉我如何解决这个问题吗?

C 代码

while(fscanf(readmissiles,"\n %s \n",missilename)!=EOF)
        {
            missilename=malloc(20*sizeof(char));
            insertvalue(LL,missilename);
            missilenum++;
        }

到 FSCANF 的文本文件来自

单身的

单身的

V线

h线

单身的

输出/显示

/ Single前有空行显示/

单身的

h线

V线

单身的

单身的

7

fscanf返回扫描的元素数或EOF ,以防出错或在匹配任何内容之前到达文件末尾。 在最后一个循环fscanf返回 0 - 它没有扫描元素但它扫描了\n ,所以它返回0 做:

while(fscanf(readmissiles, "%s", missilename) == 1)

循环直到扫描到一个元素。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM