如何从文件中打印内容

时间:2014-10-19 05:06:06

标签: c xcode codeblocks

我想输入文件名,然后显示文件内容(包含数字行)。我使用的代码是:

#include <stdio.h>
#include <stdlib.h>

void main(int argc,char *argv[])
{
  FILE *file;
  file = fopen(argv[1],"r");
  char line[100];

  while(!feof(file)){
      fgets(line,100,file);
      puts(line);
  }
fclose(file);
}

当我尝试在代码块中运行程序时,它只是崩溃了程序。我尝试在Xcode中运行,我收到消息Segmentation fault:11然后程序退出。有人可以帮忙吗?

好的,所以我尝试了另一种方式,但仍然没有成功:

#include <stdio.h>
#include <stdbool.h>
#include <string.h>

int main(int argc,char *argv[])
{
    FILE *file;
    char line[100];
    file = fopen(argv[1],"r");

    do {
        char c = fgetc(file);
        if (c == EOF) break;
        memset(line,0,100);
        while ((c != '\n') && (c != EOF)) {
            c = fgetc(file);
        }
        printf("%s",line);

    } while (true);
    fclose(file);
}

2 个答案:

答案 0 :(得分:0)

试试这个:(确保要读取的文件位于同一目录中)

 void main(int argc,char *argv[])
 {
     FILE *file;
     char ch;
     if (argc > 1) {
        file = fopen(argv[1],"r");
         //you can use argv[1] ...
         // check if file is there  ...
         if( file == NULL )
         {
           //opening error...handle it by exit()...
            printf("error...");
         }
         while( ( ch = fgetc(file) ) != EOF ){
             printf("%c",ch);
             exit(0);
         }

        fclose(file);
     }else{
     printf("Not enough args");
     exit(0);
     }
}

或者您可以直接调用不带参数的文件....

#include <stdio.h>
#include <string.h>

main()
{
     FILE *fp;
     char buff[255];

     fp = fopen("input.txt", "r");
     if( fp != NULL ){
         while ( !feof(fp ) ){
         memset(buff, '\0', sizeof( buff) );
         fgets(buff, 255, (FILE*)fp);
         printf("%s", buff );
         }
         fclose(fp);
     }
}

input.txt应该在此代码文件的同一目录中...

答案 1 :(得分:0)

错误的EOF检测。

fgets()的返回值将通知是否已读取任何数据。检查feof()为时已晚。

if (file == NULL) Handle_OpenError();

//while(!feof(file)){
  // fgets(line,100,file);
while (fgets(line,100,file) != NULL) { 

  puts(line);
}

注意:fputs(line, stdout);而不是puts(line);,以避免额外的'\n'