gpt4 book ai didi

c - 从文件初始化嵌套结构的值

转载 作者:太空宇宙 更新时间:2023-11-04 08:31:03 25 4
gpt4 key购买 nike

我在 C 语言中遇到了结构问题,有人可以帮忙吗?我是 C 和结构的新手,所以请善待我。我在下面声明了两个结构,其中一个嵌套在另一个结构中。

struct orders_tag {
int number_of_orders;
char item_name[20];
int price;
};

typedef struct orders_tag order;

struct customer_tag {
char name[30];
order total_order[10];
};

typedef struct customer_tag customer;

我也在 main 中初始化了这些值。

customer cus_array[20];
customer c;

我正在尝试从文件中读取信息并将这些值放入我的嵌套结构中,但我真的不明白这里发生了什么。任何解释将不胜感激。

infile = fopen("input.txt", "r");

if (infile == NULL) {
printf("Couldn't open the fire.");
return 1;
}

while (fscanf(infile, "%s %d %s %2f", c.name, c.total_order.number_of_orders
, c.total_order.item_name, c.total_order.price) != EOF) {

}

我相信我得到的唯一错误是 while 循环条件。

最佳答案

在您的代码中,price 被定义为 int 并且您正在使用 %2f 来读取该值。不正确。

仅供引用,第 7.19.6.2 章第 10 段,C99 标准,

Unless assignment suppression was indicated by a *, the result of the conversion is placed in the object pointed to by the first argument following the format argument that has not already received a conversion result.If this object does not have an appropriate type, or if the result of the conversion cannot be represented in the object, the behavior is undefined.

接下来,使用 fscanf(),您应该提供必须存储值的内存位置的指针。您需要根据需要使用&

此外,在c.total_order.number_of_orders 情况下,total_order 是一个数组,因此您必须使用数组下标来表示特定变量在数组中。像

c.total_order[i].number_of_orders

其中 i 用作索引。

关于c - 从文件初始化嵌套结构的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28362182/

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