2017-04-13 106 views
-3

当前,我正在编写c程序中的代码,用于从输入文件打印小部分内容。实际上,在我的代码中,我只能打印一行。但是,我必须在一行之后打印接下来的5行。从输入文件打印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

我除去C++代码。 C和C++以及完全不同的语言。如果你想用C++来做到这一点,那就简单多了。 – BoBTFish

回答

1

当您关闭文件并返回发生在你的while循环,第一次迭代中,第一个逻辑上的错误给出0.

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

相反:

  1. 通过文件使用迭代while循环。
  2. 使用标准库c函数进行文件读取。
  3. 检查文件是否已达到结尾。
  4. 如果该行仍然有效,则打印该行。

下面是一些代码重申:

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 
+2

请看[为什么'while(!feof(file))'总是出错?](http://stackoverflow.com/questions/5431941/why-is-while-feof-file-always-wrong)。 – unwind

+1

非常感谢你!出于某种原因,我的大学教授从来没有提到过,我从来没有意识到这是feof()的错误用法! –