这是我的代码。它目前从一个文本文件中读取,一次一行。我使用 strcpy 将每一行存储到数组“行”中。我的问题是,如何打印出这个数组的一个元素?目前这段代码可以编译运行,但是没有输出。
#include <stdio.h>
#include <string.h>
int main()
{
FILE *ptr_file;
char buf[1000];
char lines[10][500];
//num of strings, length of strings
char *pointertoarray = lines[0];
ptr_file =fopen("d1.txt","r");
fgets(buf,1000, ptr_file)!=NULL;
strcpy(buf, lines[0]);
fgets(buf,1000, ptr_file)!=NULL;
strcpy(buf, lines[1]);
fclose(ptr_file);
printf("%s", pointertoarray);
return 0;
}
最佳答案
这个:
strcpy(buf, lines[0]);
应该是:
strcpy(lines[0], buf);
要打印它,您可以这样做:
printf("%s\n", lines[0]);
printf("%s\n", lines[1]);
此外,您正在读取一个 1000 个字符的字符串并将其复制到一个 500 个字符的缓冲区中……这可能不太好。调整缓冲区以使大小匹配或使用 strncpy 来限制您复制的字符数量,以免溢出。
在任何情况下,您都可能希望使用循环来读入行而不是对其进行硬编码。您可以使用 fgets 读取行并使用 malloc 为每个新行动态分配内存。这需要做更多的工作,但最终会好很多,因为它允许您读取行数未知的文件,而不必在读取多少行之前决定。
关于c - 从文件中读取文本,将行存储在数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22458630/