int lire(int indice1) {
int indice2 = 0;
char c[1000];
FILE *fptr;
FILE *indice2r;
indice1 = 0;
fptr = fopen("Participant.txt", "r");
if (fscanf(fptr, "%d", &indice1) == EOF) {
return (indice1);
} else {
while (fscanf(fptr, "%d", &indice1) != EOF) {
indice2r = fopen("indice2.txt", "w+");
fscanf(indice2r, "%d", &indice2);
for (indice2 = 0; c[indice2] != '\n'; indice2++) {
fscanf(fptr, "%c", &c[indice2]);
}
fscanf(fptr, "%d", &indice1);
indice1++;
fprintf(indice2r, "%d", indice2);
}
fclose(indice2r);
return indice1;
}
}
我的问题是,只要我的程序进入了在读取'\n'
之后应该停止的for函数,它就会继续运行并且不会离开循环。
答案 0 :(得分:2)
indice2在比较之前递增,所以你不是在比较读数值而是在我相信之后的索引。
答案 1 :(得分:1)
请勿将fscanf()
的返回值与EOF
进行比较,而是与预期的转化次数进行比较。
此外,此代码存在严重混淆:
fscanf(indice2r, "%d", &indice2)
for (indice2 = 0; c[indice2] != '\n'; indice2++) {
fscanf(fptr, "%c", &c[indice2]);
}
您将整数读入indice2
,然后使用相同的变量扫描行尾。您应该使用不同的方法跳到行尾:
if (fscanf(indice2r, "%d", &indice2) != 1) {
/* handle invalid input... */
}
/* consume the end of the line */
int c;
while ((c = getc(indice2_r)) != EOF && c != '\n')
continue;