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

时间:2018-03-04 17:28:43

标签: c

我试图将文件中的整数和浮点数存储到数组中。我不知道为什么它没有阅读价值观。它只是让我全部为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

1 个答案:

答案 0 :(得分: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都会忽略任何空格,因此在这种情况下,无需查找换行符。