fgets
是一个用于从文件流中读取一行数据的 C 语言函数。通常,我们会使用 while
循环来持续读取文件直到遇到文件结束(EOF)或发生错误。如果你想尝试“打破”这样的 while
循环,意味着你想在某些条件下提前退出循环。
fgets
while 循环假设我们有以下代码:
#include <stdio.h>
#include <string.h>
int main() {
FILE *file = fopen("example.txt", "r");
if (file == NULL) {
perror("Error opening file");
return 1;
}
char line[256];
while (fgets(line, sizeof(line), file)) {
// 正常处理每一行数据
printf("%s", line);
// 假设我们想在读取到包含"exit"的行时退出循环
if (strstr(line, "exit") != NULL) {
break; // 打破循环
}
}
fclose(file);
return 0;
}
在这个例子中,我们使用 strstr
函数检查当前读取的行是否包含字符串 "exit"。如果包含,我们就使用 break
语句提前退出 while
循环。
fgets
永远返回非空值,循环将永远不会结束。这通常是因为文件没有正确关闭或文件指针没有正确设置。确保文件已正确打开,并且在适当的时候调用 fclose
。fgets
返回 NULL
并且不是因为 EOF,那么可能是发生了读取错误。你可以使用 ferror
函数检查是否有错误发生,并相应地处理它。if (fgets(line, sizeof(line), file) == NULL) {
if (feof(file)) {
// 文件结束
} else if (ferror(file)) {
// 读取错误
perror("Error reading file");
}
}
通过这种方式,你可以有效地控制 fgets
的 while
循环,并在需要时提前退出。
领取专属 10元无门槛券
手把手带您无忧上云