gpt4 book ai didi

C: fscanf 导致未初始化变量错误

转载 作者:太空宇宙 更新时间:2023-11-04 06:01:39 24 4
gpt4 key购买 nike

我正尝试从 snack.dat 文件中获取信息,但出现此错误。

警告:“fido_speed”可能会在这个函数中使用未初始化的 [-Wuninitialized]|

其余的 int* 声明依此类推。

“零食.dat”

10 20 5 15
19 20 20 20
1 50 1 51
10 20 10 20
0 0 0 0

代码

int main()
{
FILE* input;
FILE* output;

const char* in_file="snack.dat";
const char* out_file="snack.out";

int* fido_speed;
int* joe_speed;

int* fido_distance;
int* joe_distance;

input = fopen(in_file,"r");
output = fopen(out_file,"w");

while(!feof(input)){

fscanf(input,"%d %d %d %d", joe_distance, fido_distance, joe_speed, fido_speed);

if (((*joe_distance)/(*joe_speed)) < ((*fido_distance)/(*fido_speed))){
fprintf(output,"Fido is no longer hungry.");
}

else if(((*joe_distance)/(*joe_speed)) > ((*fido_distance)/(*fido_speed))){
fprintf(output,"Joe makes it.");
}

else{
fprintf(output,"/0");
}
};

fclose(input);
fclose(output);
return 0;
}

最佳答案

糟糕!您的指针没有分配任何存储空间(因此“未初始化”):

int* fido_speed;

是一个指针,它保存着 int 类型的地址(或者,如果未初始化,则为垃圾/伪造地址)。但是,它不保存它指向的 int 的值。为此,您需要 malloc() 它一些内存,或者将它指向一个现有的 int。

在这种情况下,将普通 int 的地址传递给 scanf 可能更容易:

int fido_speed;  // not a pointer
fscanf(input, "%d", &fido_speed);

关于C: fscanf 导致未初始化变量错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18727814/

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