gpt4 book ai didi

使用文本文件创建结构数组

转载 作者:行者123 更新时间:2023-11-30 15:04:58 25 4
gpt4 key购买 nike

给定一个半已知格式的文本文件。 1 行中的总字符数将少于 1000。Zinteger 只是一个普通整数,但它有不同的用途。字符串通过空格终止。

字符串 ZInteger 整数 Integer

字符串 ZInteger 整数 整数 整数 整数

所以它是一个单词,后面跟着一个数字,后面跟着一对数字,但是数字对的数量是随机的。

我想在数据结构中存储每行的字符串、Zinteger 和整数对。

所以我尝试了一个数组,其中 A[1] 是一个具有 String、Zinteger 和整数对的结构,这将是另一个具有整数对的结构。这是我尝试过的。

typedef struct {
int num1;
int num2;
} ints_t;

typedef struct {
char term[1000];
int quantity(bad variable name, could be called alpha);
ints_t *pairs;
} info_t;

感谢帮助。

编辑:好吧,所以我太开放了。因此,我只是问一个简单的问题,我制作的两个结构是否可行,如果不是,我如何使它们可行,以及如何 malloc 结构和数组。

最佳答案

您的结构看起来很合理,但是,它缺少一个用于存储对数计数的字段:

typedef struct {
int num1;
int num2;
} int_pair_t;

typedef struct {
char term[1000];
int zinteger; /* so named to avoid confusion */
int n_pairs;
int_pair_t *pairs;
} info_t;

给定每行最多 1000 个字符,并假设一个字符串后跟一个空格,后跟一个数字 Zinteger,则 332 是最大的对数(单个数字后跟空格)后跟一个数字),可以容纳在剩余的字符中。

因此,您可以使用固定大小的 int_pair_t 对[332] 数组来读取一行中的对,以及 term 的字符串,和 int 用于 Zinteger 和对计数。读取该行后,您可以将对数据复制到新分配的 info_t 结构中,该结构的大小正好合适,并将其添加到您拥有的该行的任何集合中。

如果你不太关心内存使用情况(每行小于 3KB),你可以跳过 malloc 和复制,只需在 info_t 结构中分配一个固定大小的数组:

#define MAX_PAIRS    332

typedef struct {
char term[1000];
int zinteger; /* so named to avoid confusion */
int n_pairs;
int_pair_t pairs[MAX_PAIRS];
} info_t;
<小时/>

您原来的问题还询问如何从文本文件读取数据。将文件中的一行数据读入 char 缓冲区。然后你可以使用strtok()使用空格作为分隔符来处理文件中的字段。如果需要,您可以将其与 sscanf() 结合起来提取前 2 个字段,并使用 strtok 处理剩余字段。

关于使用文本文件创建结构数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40057920/

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