c - 从文件中读取文本,将行存储在数组中

标签 c file text

这是我的代码。它目前从一个文本文件中读取,一次一行。我使用 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/

相关文章:

c++ - C:为什么K&R中写着EOF不适合char?

c - Posix 调用 'read' 不读取整个文件

python - 如何在 python 中的匹配行之后获取行

java - 无法在Java中读取阿拉伯文本文件

c++ - libmediainfo 有替代方案吗?

c - *在实践中* : decent C code, 或体面的手写汇编程序哪个更快?

c - 为什么BSS段默认是 "16"?

java - 我如何在类中包含(常量)原始数据表?

ruby - 通过命令行添加文件到redmine

python - 从 Python 数据框中文本列中的特定单词创建虚拟变量和分类变量