gpt4 book ai didi

c - 如何从文件中扫描字符串并将其存储在字符串数组(二维数组)中?

转载 作者:行者123 更新时间:2023-11-30 16:22:09 24 4
gpt4 key购买 nike

我正在扫描文件中的字符串并将其存储到字符串数组中。当我编译程序时,它不会产生任何错误,但是当我运行它时,它显示 Segmentation fault (core dumped) 。我知道错误出在 fscanf 语句中,但我不知道出了什么问题。

我的代码如下所示:

 FILE    *stringsIn = fopen("strings.txt", "rt");
char *strings[INPUT_STRINGS];

for (int i = 0; i < INPUT_STRINGS; i++)
fscanf(stringsIn, "%s ", &strings[i][0]);

最佳答案

您有一个指针数组,但没有为每个字符串分配空间。在这种情况下,您可以做的是预分配一个足够大的缓冲区或在预分配的缓冲区中读取,查看读取了多少个字符并分配该大小的字符串。

FILE    *stringsIn = fopen("strings.txt", "rt");
char *strings[INPUT_STRINGS];

for (int i = 0; i < INPUT_STRINGS; i++) {
strings[i] = (char*)malloc(2048); //allocate a big enough buffer
fscanf(stringsIn, "%2047s ", &strings[i][0]);
}

第二个版本类似于:

FILE    *stringsIn = fopen("strings.txt", "rt");
char *strings[INPUT_STRINGS];
char temp[2048];

for (int i = 0; i < INPUT_STRINGS; i++) {
fscanf(stringsIn, "%2047s ", &temp);
size_t len = strlen(temp);
strings[i] = (char*)malloc(len + 1);
strncpy(strings[i], temp, len);
}

关于c - 如何从文件中扫描字符串并将其存储在字符串数组(二维数组)中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54547998/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com