逐行读取并存储在C中

时间:2017-09-17 23:47:05

标签: c arrays file getline

我在如何在C中使用getline时遇到问题。我想读取每一行并将其存储到数组中。所以我能够读取每一行,打印每一行并打印每行中的字符数。

我在运行程序时遇到问题它没有打印出行数和文件,并且它不会停止它只是在打印文件的所有行后保持放置。

我也不知道如何将线存储到数组中。任何帮助/提示将不胜感激!!!

int main(int argc, char *argv[])
{
  int line_count=0;
  int charac_count;
  int count=0;

  char line[81];    
  char *lineptr;
  lineptr=(char*)malloc(sizeof(char)*81);
  int lineptr_size=81;  
  if(!lineptr)
  {
     printf("malloc memory error\n");
     exit(EXIT_FAILURE);
  }     

  if(argc !=3)
  {
    printf("Number of parameters is incorrect.\n");
    exit(EXIT_FAILURE);
  }

  FILE *r; 

  r=fopen(argv[1], "r");
  if(r==NULL)
  {
      printf("File cant be open\n");
      exit(EXIT_FAILURE);
  }


  charac_count=getline(&lineptr, &lineptr_size, r);
  while(charac_counter!=EOF)
  {


        if(charac_count!=-1)
        {
            puts(lineptr);
            printf("%i\n", charac_count);
        }
        line_count++;
        break;


  }


  printf("%i\n", count);
  fclose(r);
  free(lineptr);
  return 0;

}

1 个答案:

答案 0 :(得分:0)

正如@BLUEPIXY所提到的,你有一个无限循环。尝试这样的事情:

while((charac_count=getline(&lineptr, &lineptr_size, r))!=EOF)
  {
        if(charac_count!=-1)
        {
            puts(lineptr);
            printf("%i\n", charac_count);
        }
        line_count++;
        break;
  }