gpt4 book ai didi

c - 如何将文件中的值包含到代码中

转载 作者:太空宇宙 更新时间:2023-11-04 04:20:57 25 4
gpt4 key购买 nike

我有一个 Student Record 结构,我想暂时用两个文件 NamesIDsDataFile 和 MarksDataFile 中的值填充,但是当我运行循环时,只有 NamesIDsDataFile 中的值进入该结构。我将 print 语句放在 while 循环中以查看问题所在,当我运行代码时没有任何打印出来。有人可以解释一下如何打印 MarksDataFile 中的值。

struct StudentRecord {

char FirstNames[MAXLENGTH];
char LastNames[MAXLENGTH];
int IDNums;
int Marks;

};

FILE * NamesIDsDataFile;
FILE * MarksDataFile;

while (fscanf(NamesIDsDataFile,"%s%s%d",&(SRecords.FirstNames[0]),
&(SRecords.LastNames[0]), &(SRecords.IDNums)) != EOF) {

fscanf(MarksDataFile,"%d",&(SRecords.Marks));

printf("%d", SRecords.Marks);

}

fclose(NamesIDsDataFile);
fclose(MarksDataFile);

最佳答案

通过对代码进行少量更改来实现的简单方法是:

while (fscanf(NamesIDsDataFile," %s %s %d ",&(SRecords.FirstNames[0]), 
&(SRecords.LastNames[0]), &(SRecords.IDNums)) != EOF)
{
fscanf(MarksDataFile," %d ",&(SRecords.Marks));

printf("%d", SRecords.Marks);
}

但是,如果文本文件不总是相同且结构不佳,则不应使用上面的代码,而应使用以下代码。

这是最好的方法:

int ret1,ret2;
while (ret =fscanf(NamesIDsDataFile," %s %s %d ",&(SRecords.FirstNames[0]),
&(SRecords.LastNames[0]), &(SRecords.IDNums))) {

if(ret == EOF)
{
break;
}
else
{
ret2 = fscanf(MarksDataFile," %d ",&(SRecords.Marks));
if(ret2 == EOF || ret2 == 0)
{
break;
}else
{
printf("%d", SRecords.Marks);

}
}
}

fclose(NamesIDsDataFile);
fclose(MarksDataFile);

ret 是一个 int 变量,其值将是:

  • EOF,如果指针到达文件末尾。
  • 0,如果没有与变量匹配的输入
  • >0,与文件输入匹配的变量数

关于c - 如何将文件中的值包含到代码中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46880009/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com