gpt4 book ai didi

c - 如何从文件中正确读取整数和 float ?

转载 作者:行者123 更新时间:2023-11-30 16:35:00 24 4
gpt4 key购买 nike

我正在尝试将文件中的整数和 float 存储到数组中。我不确定为什么它不读取这些值。它只是一直给我全0。我尝试使用不同的 .txt 文件(相同格式),但得到相同的结果。我认为这会起作用,但我不明白为什么它不起作用。这是我目前拥有的:

int main(int argc, char *argv[]){
struct TData{
int MinIndex,MaxIndex,Points;
float *pValue;
} Input[2],Output;
FILE *fp;
char ch;
int i,*values;
int lines=0;
fp = fopen(argv[1],"r");
if(fp == NULL){
printf("dont do anything\n");
}
else{
while(!feof (fp)){
ch = fgetc(fp);
if(ch == '\n'){
lines++;
}
}
values = malloc(sizeof(int) * (lines));
Input[0].pValue = malloc(sizeof(float) * (lines));
for(i=0;i<lines;i++){
fscanf(fp, "%d %f",&values[i],&Input[0].pValue[i]);
printf("%d %f\n\n",values[i],Input[0].pValue[i]);

}
}

文件包含的内容:

3   3.0000000
2 2.0000000
1 1.0000000

我得到的输出:

0   0.0000000
0 0.0000000
0 0.0000000

最佳答案

这是一个展示如何读取文件的基本示例。

#include <stdio.h>

int main(int argc, char *argv[]){
FILE *fp;
int ivalue;
float fvalue;

if(argc < 2) {
return 1;
}

fp = fopen(argv[1], "r");
if(fp == NULL) {
return 1;
}

while(fscanf(fp, "%d%f", &ivalue, &fvalue) == 2) {
printf("%-5d %9f\n", ivalue, fvalue);
}

fclose(fp);
return 0;
}

程序输出

3      3.0000002      2.0000001      1.000000

请注意,fscanf 格式说明符 %d%f 都会忽略任何空格,因此在这种情况下,无需费力查找换行符.

关于c - 如何从文件中正确读取整数和 float ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49098199/

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