因此,作为一名新实习生,我需要修复其中一些人编写的大量脏代码。下面是一个片段,我有一个小问题,弄清楚究竟是什么问题:
for (i=0; i<TOOL_LIMIT; i++)
{
if ( 0 >= fscanf(fp,"%s %s %s %s %s %s %s\n",coreData[i][0],\
coreData[i][1],coreData[i][2],coreData[i][3],coreData[i][4],coreData[i][5], coreData[i][6]))
{
break;
}
totalCases++;
}
fclose(fp);
基本上,fp会打开一些具有以下正则表达式模式的文件:
data11 data12 data13 data14...data17
data21 data22 data23 data24...data27
...
我觉得这段代码的工作方式也不如预期。基本上,它假设读取文件的每一行,并填写数组coreData,如图所示。我不认为fscanf就像它在这里展示一样,但我可能错了。 这段代码是否正常工作?我有一段时间没用c做文件io。
编辑;; 对不起,应该简要概述一下失败。 基本上,C脚本是一个cgi脚本,它接受一些输入(有错误的文件)并将这些文件与fp打开的文件中的数据匹配(称之为'fp_file'),并生成一个html表。如果带有错误的文件出现在fp_file中,那么它会输出一些额外的信息(如data12等),否则会将该表中的条目留空。 例 发现文件f01有错误 我们现在检查fp是否为'f01',如果它存在,我们会显示有关该文件的更多信息(作者等)。
我所看到的是只有一个文件正确匹配(fp的第一行)。除此之外,其余的错误文件还有一个空白区域。
答案 0 :(得分:1)
此代码读取由空格分隔的六个单词组,并将它们存储在coreData数组中。
我认为只要输入行有六个由空格分隔的单词,它就能正常工作。您可以稍微加强条件,并在fscanf返回不同于6的值时从循环中断(fscanf返回成功读取的元素数)。