while (fgets(line, sizeof(line), charFile)) { int result = evaluate(charFile); printf("%d\n", result); }该代码会导致文件第一行丢失,怎么解决
时间: 2023-08-03 20:03:57 浏览: 155
parse_line_text.c
这个问题的原因是在第一次调用 `fgets` 函数时已经将文件指针指向了文件的第二行,导致第一行被跳过了。解决这个问题有两种方法:
1. 在第一次调用 `fgets` 函数之前,先把文件指针重新指向文件的开头,可以使用 `rewind` 函数实现:
```c
rewind(charFile); // 将文件指针重新定位到文件开头
while (fgets(line, sizeof(line), charFile)) {
int result = evaluate(charFile);
printf("%d\n", result);
}
```
2. 将 `evaluate` 函数的参数改为 `line`,这样就可以直接从读取的第一行开始处理:
```c
while (fgets(line, sizeof(line), charFile)) {
int result = evaluate(line);
printf("%d\n", result);
}
```
阅读全文