[英]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.