目前,我正在c程序中编写代码,用于从输入文件中打印一小部分内容。实际上,在我的代码中,我只能打印一行。但是,我必须在那一行之后打印下面的5行。
我是编程新手,请帮忙解决这个问题** 代码如下:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int lineNumber = 2;
int main()
{
FILE *file;
char line[100];
int count = 0;
///Open LS-dyna file to read
file = fopen("P:\\tut_c\\read\\df-read\\in.txt", "r");
if (file == NULL)
{
perror("fopen");
exit(EXIT_FAILURE);
}
else if ( file != NULL )
{
char line[256];
while (fgets(line, sizeof line, file) != NULL)
{
if (count == lineNumber)
{
printf("\n str %s ", line);
fclose(file);
return 0;
}
else
{
count++;
}
}
fclose(file);
}
return 0;
}
答案 0 :(得分:1)
第一次逻辑错误发生在while循环中,第一次迭代,当你关闭文件并返回0时。
接下来,没有理由为你的行设置一个计数器,因为有许多c函数可以处理找到文件结尾(eof)。
相反:
以下是一些需要重申的代码:
int main()
{
FILE *file;
file = fopen("file.txt", "r");
if (!file){ // check if file exists
perror("fopen");
exit(EXIT_FAILURE);
}
else { // if file exists, then...
char line[256];
while(fgets(line, sizeof line, file)){
printf("\n str %s ", line);
}
fclose(file);
}
return 0;
}// end main