c语言 小作业,求大佬解答简单的小作业,我今天写了一天已崩溃可以有偿

本文档描述了使用C++从CSV文件中读取数据并将其存储到结构体数组中的过程。作者遇到的问题是无论访问哪个数组元素,其值总是显示为CSV文件的最后一行内容。代码中使用了`strtok`函数来分割文件中的记录,并尝试将值分别分配给结构体的成员。然而,实际运行时出现了意料之外的错误。
摘要由CSDN通过智能技术生成

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

#include

#include

#include

struct CITY{

char *name;

char *province;

char *country;

double latitude;

double longitude;

}city[1000];

int main() {

FILE *fp = NULL;

char filename[] = "C://Users//Apple//Desktop//world_cities.csv";

char *line,*record1,*record2,*record3,*record4,*record5;

int i = 0;

char buffer[1024];

if ((fp = fopen(filename, "r")) != NULL) {

while ((line = fgets(buffer, sizeof(buffer), fp)) != NULL) {

record1 = strtok(line, ",");

record2 = strtok(NULL, ",");

record3 = strtok(NULL, ",");

record4 = strtok(NULL, ",");

record5 = strtok(NULL, ",");

if(record5 == NULL){

city[i].name = record1;

city[i].province = "none";

city[i].country = record2;

city[i].latitude = atof(record3);

city[i].longitude = atof(record4);

/*

printf("%s ", city[i].name);

printf("%s ", city[i].country);

printf("%s ", record3);

printf("%s ", record4);

*/

}

else {

city[i].name = record1;

city[i].province = record2;

city[i].country = record3;

city[i].latitude = atof(record4);

city[i].longitude = atof(record5);

/*

printf("%s ", city[i].name);

printf("%s ", city[i].province);

printf("%s ", city[i].country);

printf("%s ", record4);

printf("%s ", record5);

*/

}

printf("\n");

i++;

}

}

printf("%s \n", city[200].name);

printf("%s \n", city[200].province);

printf("%s \n", city[200].country);

printf("%f \n", city[200].latitude);

printf("%f \n", city[200].longitude);

return 0;

}

我是想先弄一个结构体数组city[1000],然后读一个csv文件,把里面的东西赋值给CITY的name,province等五个值,

a9941f38f484f75e7818a4b69743e738.png我感觉想法应该没错,不过实际运行的时候,不管是city[0]还是city[100]的值都是csv文件的最后一行的值,不知道为什么。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值