gpt4 book ai didi

创建 struct c 数组

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

所以我正在使用 struct 创建一个如下所示的地址:

typedef struct Address{
char street[100];
char city[100];
char state[3];
int zip;
}address;

我有一个如下所示的 txt 文件:

123 Anywhere
Spokane
WA
99223
500 Sprague Ave
Spokane
WA
99201
319F CEB
Cheney
WA
99004

当我读入文件时,我遇到了一个大问题。它会正确读取几行,但其他大部分内容都是错误的。任何数字都是完全错误的。

int fillArray(address *array, FILE * fin){
int i=0, total=0;
do{
fgets(array[i].street, 100, fin);
fgets(array[i].city, 100, fin);
fgets(array[i].state, 3, fin);
fgets(array[i].street, 100, fin);
fscanf(fin, "%d", &array[i].zip);
total++;
i++;
}while(!feof(fin));

return total;
}

显然我做错了什么,但我不确定我做错了什么。我认为如果我使用 fgets,它会获取该行,然后将其存储到我需要它的区域。我之前已经将 fscanf 用于所有内容,但我也没有得到任何结果。它只会让 123 然后 Anywhere 进入下一个地方,因为它一直到它看到的第一个空白为止。有没有办法使用 fscanf 来获取整行,或者 fgets 不是这样做的吗?有更简单的方法吗?是的,我知道我不应该使用 while(!feof(fin)),但我们的老师现在正在教它,这就是我暂时要使用的。先感谢您。我一直在网上四处搜索,似乎无法找到我需要去的地方。

最佳答案

代码正在读取 street 两次。也许尝试删除第二个。

无关提示:不要对长度进行硬编码,例如 100,而是使用 sizeof 运算符。例如,

fgets(array[i].street, sizeof(array[i].street), fin);

关于创建 struct c 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20086149/

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