c - 如何在 C 中逐行读取 .txt?

标签 c string file

我已经阅读了有关此内容的所有内容,但仍然不知道如何执行此操作。我正在尝试逐行读取 .txt 并将其放入数组中。我认为我的代码有点工作,但是当我尝试打印数组时它不允许我这样做。

#include<stdio.h>
#include<stdlib.h>
#include<omp.h>
int main(){
    char s[20],*list[196][20];
    int i;
    FILE *lista;
    lista=fopen("lista.txt","r");
    i=0;
    while(feof==0){
        getline(list[i],0,lista);
        i=i+1;
        printf("%s\n",list[i]);
    }
    for(i=0;i<195;i++){
        //printf("%s\n",list[i]);
    }
    fclose(lista);
}

之所以有 2 个打印是因为我尝试了两种方法来看看是否可以修复它。 知道我做错了什么吗? 我得到的错误是“格式‘%s’需要‘char *’类型的参数,但参数 2 的类型为‘char**’

最佳答案

将 list 声明为 char 指针数组 20 的数组 196 的原因是什么?该代码看起来更可靠。

int main ( void )
{
   static const char filename[] = "lista.txt";
   FILE *file = fopen ( filename, "r" );
   char list[196][20];
   int i = 0;
   if ( file != NULL )
   {
      char line [ 128 ]; /* or other suitable maximum line size */
      while ( fgets ( line, sizeof line, file ) != NULL ) /* read a line */
      {
         strcpy( list[i], line );  /* copy the line into list */
         fputs ( line, stdout ); /* write the line */
         ++i;
      }
      fclose ( file );
   }
   else
   {
      perror ( filename ); /* why didn't the file open? */
   }
   return 0;
}

关于c - 如何在 C 中逐行读取 .txt?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40579904/

相关文章:

java - 如何在java中有效地读取一个巨大的文本文件并分割其内容以对其进行排序?

C:将文件作为参数传递

无法使用 C 语言将 'void*' 类型转换为 'double*' 或 'float*'

java - 检索分成 2 个或更多字符串的文本行

c - 如何在 C 中缩写全名?

c - 如何将字符从数组复制到用户在 C 中创建的文件

javascript - Chrome 扩展程序,来自字符串的文件?

python - 如何围绕屏幕中心旋转等距相机?

c - 如何确定客户端是否已连接到我的套接字?

c++ - 将 wsprintf 与 malloc 一起使用