在此之前,英语不是我的主要语言,所以请原谅任何错误。
几天前我开始学习如何在C中使用文件,而且我在使用这段代码时遇到了问题:
while(!feof(fp)){
fscanf(fp, "%04d\t%s\n", &code, students[ind].disc[0].name);
if(code == dcode) return 1;
}
编码它是一个内部函数变量,而dcode是比较的课程代码,基本上,如果课程代码不存在,函数需要比较,然后将课程名称分配给.name元素。学生结构。文件正确打开,并以这种方式构建:
0101 Math
0102 History
等......
你能帮助我吗?答案 0 :(得分:1)
当您希望仅使用fscanf
取得进展时,拥有无限循环的主要原因是fscanf
因格式不匹配而无法读取任何内容。
在您的情况下,最后一行似乎没有\n
,这意味着fscanf
永远不会匹配它。
解决此问题的一种方法是检查fscanf
而不是feof
的返回值(它也有自己的问题,但这是一个不同的主题)
while (fscanf(fp, "%04d\t%s", &code, students[ind].disc[0].name) == 2) {
if(code == dcode) return 1;
ind++; // You have probably forgotten about incrementing ind, right?
}
我从格式行的末尾删除了'\n'
字符,因为无论如何都会跳过它。