我不确定如何读取文件的所有行,atm它只读取文本文件中代码的第一行。有人能教我怎么让它读所有的台词吗?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char **argv)
{
FILE *fp;
fp = fopen("specification.txt", "r");
char ** listofdetails;
listofdetails = malloc(sizeof(char*)*6);
listofdetails[0] = malloc(sizeof(char)*100);
fgets(listofdetails[0], 100, fp);
/*strcpy(listofdetails[0], "cars");*/
printf("%s \n", listofdetails[0]);
free(listofdetails[0]);
free(listofdetails);
fclose(fp);
return 0;
}
我的文本文件:
10X16 de4 dw9 ds8 g8,7 m3,4 h6,5 p2,2
10X16 de4 dw9 ds8 g8,7 m3,4 h6,5 p2,2
10X16 de4 dw9 ds8 g8,7 m3,4 h6,5 p2,2
5条答案
按热度按时间dzjeubhm1#
thtygnil2#
如果你想逐行读取'specification.txt'文本文件,你可以这样做:
确保你的“行”缓冲区足够大。
1yjd4xko3#
使用getline(3),假设你的操作系统和libc是Posix2008兼容的(例如。在Linux上):
上面的代码可以在系统资源允许的情况下接受尽可能多的行和更大的行。在我强大的笔记本电脑(16GB RAM)上,我可能能够读取超过一百万行的文件,每行近一千个字符(或者一个单行数百万个字符的文件)。
在程序结束时,你应该更好地释放内存:
x6h2sr284#
另一个例子:如果你的目标是POSIX平台,你可以使用
getline
。它分配存储行所需的空间,但您必须自行释放它。如果有错误或错误,getline返回-1。cclgggtu5#
您可以通过以下方式读取整个文件:
上面的代码读取
filename.txt
文件并将其打印到stdout
。