gpt4 book ai didi

C : fscanf called multiple times does not work

转载 作者:行者123 更新时间:2023-11-30 20:30:48 25 4
gpt4 key购买 nike

我尝试读取文本文件中的不同值:这是我的文件:

4,3
30.0
20.0
1.0

我的输出适用于第一行,我可以通过一次 fscanf 调用分别获取 4 和 3。但是当我想再次调用 fscanf 来获取 double 时,它​​返回 0 但我想要 30.0!

我的代码在这里:

int* read_size(FILE* f) {
int* taille;
fscanf(f, "%d,%d", &taille[0], &taille[1]);
return taille;
}

int read_int(FILE* f) {
int i;
fscanf(f, "%d", &i);
return i;
}

double read_double(FILE* f) {
double d;
fscanf(f, "%lf", &d);
return d;
}

FILE* getFile() {
char* fileName = "1.conf";
FILE* f = fopen(fileName, "r");
return f;
}



int main( int argc, char *argv[]) {
FILE* f = getFile();
int* taille = read_size(f);
printf("maitre : taille[0] : %d, taille[1] : %d\n", taille[0], taille[1]);
double temperature = read_double(f);
printf("maitre : lecture de temperature %2f\n", temperature);
}

最佳答案

int* taille; 为指针保留空间,但不为实际值保留空间。读取指针任意指向的值,会产生未定义的行为。

解决这个问题的最简单方法是编写static int taille[2]。那么其余的应该可以正常工作。

关于C : fscanf called multiple times does not work,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53271201/

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