从输入文件

时间:2017-04-13 06:08:10

标签: c file

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

}

1 个答案:

答案 0 :(得分:1)

第一次逻辑错误发生在while循环中,第一次迭代,当你关闭文件并返回0时。

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

相反:

  1. 使用while循环迭代文件。
  2. 使用标准库c函数进行文件读取。
  3. 检查文件是否已到达结尾。
  4. 如果该行仍然有效,则打印该行。
  5. 以下是一些需要重申的代码:

    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