使用双指针和malloc将文本文件的行读入数组

时间:2019-06-06 08:39:27

标签: c

我想读取文本文件的各行,其内容如下。

第一
第二
第三

我已经写了一些代码,但是结果与我预期的不同。希望您能对我有所帮助。 (下面的代码)

npm install -g @angular/cli@6

预期输出:

0:第一
1:秒
2:第三名

非常感谢。

1 个答案:

答案 0 :(得分:1)

首先,您要为两个 char* s数组分配空间,并且为字符串提供一个 single 静态大小的缓冲区。但是您正在尝试读取三个字符串。您认为弦的空间来自哪里?您没有分配它。

您需要使各个数字匹配:分配一个三个字符串数组,然后分配一个三个字符串缓冲区:

char **lst = malloc(3 * sizeof *lst);

for (int i = 0; i < 3; i++) {
    lst[i] = malloc(10);
    fgets(lst[i], 10, fp);
}

也不要忘记随后free分配所有缓冲区:

for (int i = 0; i < 3; i++) {
    free(lst[i]);
}
free(lst);

…当然,此代码也不是很出色,因为它对您可以读取的行数和最大行长进行了硬编码。但这应该可以帮助您入门。