如何从文件中正确读取整数和浮点数?

问题描述 投票:0回答:1

我试图存储从文件到数组的整数和浮点数。我不知道为什么它没有阅读价值观。它只是让我全部为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
c
1个回答
0
投票

这是显示如何读取文件的基本示例。

#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.000000
2      2.000000
1      1.000000

请注意,fscanf格式说明符%d%f都忽略任何空格,因此在这种情况下,不必乱七八糟地查找换行符。

© www.soinside.com 2019 - 2024. All rights reserved.