fscanf在此C代码中失败

fscanf在此C代码中失败,c,file-io,scanf,C,File Io,Scanf,因此,作为一名新实习生,我需要修复其中一些人编写的许多肮脏代码。下面是一个片段,我有一个小问题要弄清楚确切的问题是什么: 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],coreDa

因此,作为一名新实习生,我需要修复其中一些人编写的许多肮脏代码。下面是一个片段,我有一个小问题要弄清楚确切的问题是什么:

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);
我觉得这段代码也没有按预期的方式工作。基本上,它假设读取文件的每一行,并填充数组coreData,如图所示。我不认为fscanf像这里展示的那样工作,但我可能错了。 这段代码是否正常工作?我已经有一段时间没有用c做文件io了

编辑;; 对不起,我应该简要介绍一下失败。 基本上,C脚本是一个cgi脚本,它接收一些输入(有错误的文件),并将这些文件与fp打开的文件中的数据相匹配(称为“fp_文件”),并生成一个html表。如果带有错误的文件显示在fp_文件中,那么它会打印一些额外的信息(如data12等),否则它会将该表中的条目留空。 例子 发现文件f01有错误 我们现在检查fp中的'f01',如果它存在,我们将显示有关该文件的更多信息(作者等)


我看到的是,只有一个文件被正确匹配(fp的第一行)。除此之外,其余错误文件都有一个空格。

此代码读取由六个单词组成的组,用空格分隔,并将它们存储在coreData数组中


我认为只要输入行有六个用空格隔开的单词,它就可以工作。您可以稍微加强条件,并在fscanf返回的值与6不同时立即中断循环(fscanf返回成功读取的元素数)。

coreData的类型是什么?
fscanf
的返回值是多少?调用
fscanf
后,
coreData
变量的值是多少?如果您能提供一个小的、完整的测试用例,这会有所帮助——请参阅。我对它的失败原因进行了编辑。我使用一个示例文件作为测试。我有一种感觉,它并没有越过你凭感觉调试的第一条线?你是绝地武士吗?还是一种移情?哈哈,我做了一些调试。我用另一行替换了第一行,正确匹配的原始文件不再匹配。我们说话的时候我还在调试。是否有更好的方法逐行读取文件?是的,我建议使用fgets读取文件的整行,然后使用sscanf从单行读取到各个字段。对不起,我键入时出错,文件每行正好有7个字,fscanf现在反映了这一点。
data11 data12 data13 data14...data17
data21 data22 data23 data24...data27
...