C 从输入文件打印5行

C 从输入文件打印5行,c,file,C,File,目前,我正在用c程序编写代码,用于打印输入文件中的一小部分内容。实际上,在我的代码中,我可以只打印一行。但是,我必须在那一行之后再打印下5行 我是编程新手,请帮我解决这个问题** 代码如下所示 #include <stdio.h> #include <stdlib.h> #include <string.h> int lineNumber = 2; int main() { FILE *file; char line[100]; int

目前,我正在用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;

}
#包括
#包括
#包括
int lineNumber=2;
int main()
{
文件*文件;
字符行[100];
整数计数=0;
///打开LS dyna文件进行读取
file=fopen(“P:\\tut\u c\\read\\df read\\in.txt”,“r”);
if(file==NULL)
{
佩罗尔(“福彭”);
退出(退出失败);
}
else if(文件!=NULL)
{
字符行[256];
while(fgets(行、行大小、文件)!=NULL)
{
如果(计数==行号)
{
printf(“\n str%s”,第行);
fclose(文件);
返回0;
}
其他的
{
计数++;
}
}
fclose(文件);
}
返回0;
}

当您关闭文件并返回0时,while循环的第一次迭代中会出现第一个逻辑错误

接下来,没有理由为行设置计数器,因为有许多c函数可以处理查找文件结尾(eof)的操作

相反:

  • 在文件中使用while循环进行迭代
  • 使用标准库c函数读取文件
  • 检查文件是否已到达末尾
  • 如果该行仍然有效,则打印该行
  • 下面是一些需要重申的代码:

    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
    

    我删除了C++标签。C和C++,完全不同的语言。如果你想在C++中做这件事,那就简单多了。请看。非常感谢你!出于某种原因,我的大学教授从未向我提及过这一点,我也从未意识到这是feof()的错误用法!