我在循环fscanf时遇到问题。就像下面的代码(专注于while循环开始的部分)一样,我循环fscanf直到到达EOF。从下面的第二部分可以看出,从ftxt到.scan文件的.txt文件只有6个字符串,因此fscanf只能循环执行6次,然后到达EOF。但是,从程序输出(下面的第二部分)可以看到,fscanf循环了7次。由于我的程序以相反的顺序显示导弹名称,因此我假设while循环在末尾又循环了1次,从而在第三张图片的第一行输出了空白行。
有人可以告诉我如何解决此问题吗?
C代码
while(fscanf(readmissiles,"\n %s \n",missilename)!=EOF)
{
missilename=malloc(20*sizeof(char));
insertvalue(LL,missilename);
missilenum++;
}
来自FSCANF的文本文件
单身
飞溅
单身
V线
h-line
单身
输出/显示
/ 在Single之前显示空白行 /
单身
h-line
V线
单身
飞溅
单身
7
fscanf
返回已扫描的元素数,如果错误或到达文件末尾,则返回EOF
,然后才可以匹配任何内容。在最后一个循环中,fscanf
返回0-它没有扫描元素,但是它扫描了\n
,因此它返回了0
。做:
while(fscanf(readmissiles, "%s", missilename) == 1)
循环直到扫描到一个元素。