繁体   English   中英

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

[英]how to correctly reading Integers and Floats from a file?

我正在尝试存储整数并从文件浮点到数组。 我不确定为什么不读值。 它只是一直给我全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.000000
2      2.000000
1      1.000000

请注意, fscanf格式说明符%d%f都忽略任何空格,因此在这种情况下,不必费心寻找换行符。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM