gpt4 book ai didi

c - 将文件内容扫描到结构数组中

转载 作者:行者123 更新时间:2023-11-30 18:09:07 26 4
gpt4 key购买 nike

我的程序中有一个包含特定数组的结构。我想扫描一个带有数字的随机文件并将内容放入该数组中。

这是我的代码:(注意:这是来自更大程序的示例,因此我需要声明的结构和数组)

文件的内容基本上是:5 4 3 2 5 3 4 2

#include<stdio.h>

#define first 500
#define sec 500


struct trial{
int f;
int r;
float what[first][sec];
};

int trialtest(trial *test);

main(){
trial test;
trialtest(&test);
}

int trialtest(trial *test){
int z,x,i;
FILE *fin;
fin=fopen("randomfile.txt","r");
for(i=0;i<5;i++){
fscanf(fin,"%5.2f\t",(*test).what[z][x]);
}
fclose(fin);
return 0;
}

但问题是,每当我运行此代码时,都会收到此错误: alt text

(25):警告 508 - 在需要指针的地方提供了“double”类型的数据

我尝试添加

do{
for(i=0;i<5;i++){
q=fscanf(fin,"%5.2f\t",(*test).what[z][x]);
}
}while(q!=EOF);

但这也不起作用,它给出了相同的错误。

有人能解决这个问题吗?

最佳答案

这个表达式:(*test).what[z][x] 是数组中的一个float(它被提升为double) code>,因此出现警告消息)。 fscanf() 需要获取指向数据的指针(在本例中为浮点),以便可以写入数据。您需要将此行更改为:

q=fscanf(fin,"%5.2f\t",&(*test).what[z][x]);

顺便说一句,通过指向 struct 的指针访问 struct 的成员非常常见,因此您有一个特殊的 -> C 中的 > 运算符就是这样做的。因此,您可以编写 foo->bar,而不是 (*foo).bar

因此该行变得更具可读性:

q=fscanf(fin,"%5.2f\t",&test->what[z][x]);

关于c - 将文件内容扫描到结构数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2795670/

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