我的程序正确地从文件中读取特定行,但是它会从我指定的行中读取整个文件。我尝试一次只打印一行。我怎样才能让它只读一行?
代码:
int main()
{
int lineNumber = 5;
static const char filename[] = "Text.txt";
FILE *file = fopen(filename, "r");
int count = 0;
if ( file != NULL )
{
char line[256]; /* or other suitable maximum line size */
while (fgets(line, sizeof line, file) != NULL) /* read a line */
{
if (count == lineNumber)
{
printf("%s", line);
//in case of a return first close the file with "fclose(file);"
}
else
{
count++;
}
}
fclose(file);
}
}
找到所需的行后,只需使用 break
退出循环:
if (count == lineNumber)
{
printf("%s", line);
break;
}
if (count == lineNumber)
{
printf("%s", line);
//in case of a return first close the file with "fclose(file);"
count++;
}
当您得到指定的行时count
递增,否则count
将不会继续指示下一行。这就是为什么您的代码在获得指定的行后打印所有行的原因。因为行号一旦等于行号count
就不会增加。所以添加count++
.
您甚至可以break
循环,因为在获得指定行后不需要读取其余行。