gpt4 book ai didi

从输入文件创建 3D 阵列?

转载 作者:太空宇宙 更新时间:2023-11-04 04:48:53 28 4
gpt4 key购买 nike

我想将输入文件中的以下行存储到 3D 数组中(不包括第一行。)第一行表示后续行的数量。

3

4 9368 86 843 23224

4 7323 2 2665 2665

8447 47 843 5278 8378 2273

我的问题是,如果我使用 fscanf,则无法判断何时有换行符。因此我不能停止扫描并转到最外层数组中的下一个索引。如果我使用 fgets 和 sscanf,我只能读取每行的第一个字符串(在本例中,先是 4,然后是 4,然后是 8447。)

那是因为 fgets 将一整行处理为一个字符串(1D 数组),而我希望将每一行作为一个 2D 数组处理,然后将每行存储在最外层的数组中,从而得到一个 3D 数组。

我该如何解决这个问题?

最佳答案

您可以结合使用 sscanf()fgets() 一次解析一个数字。您可以通过在解析每个数字时将指针推进到字符串中来实现。

while (fgets(buf, sizeof(buf), infile) != 0) {
const char *p = buf;
size_t len = strlen(buf);
int val;
int n;
while (sscanf(p, "%d%n", &val, &n) == 1) {
/*...do something with val */
p += n;
if (p >= buf+len) break;
}
}

%n 指令提供了迄今为止在扫描中消耗的字节数。

关于从输入文件创建 3D 阵列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18026852/

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