c - 读取文件并将每一行保存到 C 中的变量

标签 c fopen

我正在使用 fgetc 和 fopen 读取 C 中的文件。我想在变量中获取第一行,在单独的变量中获取第二行,如下所示:

f = fopen("textfile", "r");

if (!f) {
   printf("error");
} else {
   loop until end of newline and save entire line to a variable
   1st line ==> line1
   2nd line ==> line2
}

所以如果文本文件有:

hello world
goodbye world

line1 = " Hello World " line2 = "再见世界"

我正在考虑循环直到\n 但我应该如何存储字符?认为这是一个简单的问题,也许我遗漏了什么?

最佳答案

你想要:

我。使用 fgets() 获取整行,然后

二。将行存储到 char 数组中。

char buf[0x1000];
size_t alloc_size = 4;
size_t n = 0;
char **lines = malloc(sizeof(*lines) * alloc_size);
// TODO: check for NULL

while (fgets(buf, sizeof(buf), f) != NULL) {
    if (++n > alloc_size) {
        alloc_size *= 2;
        char **tmp = realloc(lines, sizeof(*lines) * alloc_size);
        if (tmp != NULL) {
            lines = tmp;
        } else {
            free(lines);
            break; // error
        }

        lines[n - 1] = strdup(buf);
    }
}

关于c - 读取文件并将每一行保存到 C 中的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16091313/

相关文章:

c - 一个作者,多个读者在无锁应用中

c - FFMpeg示例程序

android - 我在哪里可以找到文件和android在JNI中写入

检查C中是否存在文件。如果存在,则继续读取文件的最后一个值并加一

c - 如何从 C 中的 txt 文件创建 char[][]?

c - 为什么 OCaml 中没有函数头?

c - 带有 C/C++ 和 openMP 的 R 包 : how to make "Makevars" file under "mypackage/src/" folder?

c - 扫描、检查、转换、复制值...如何? - C -

c - 如何用C语言打开任意长度的文件?

c - 为什么我会出现段错误?