首页 > 解决方案 > fscanf 没有完全拆分文件

问题描述

我正在尝试以逗号分隔值格式读取文件,程序读取前两种数据类型而无法读取最后一种数据类型。请问我可以帮忙吗

这是我要阅读的文件中的内容:

Jane,50,400.60

这是代码:

    FILE* fptr;
    char fileContent[1000];

    char name[100];
    int age = 0;
    double bBalance = 0;

    fptr = fopen("NTD.txt", "r");

    if (fptr == NULL)
    {

    }
    else
    {
        while (fscanf(fptr, "%30[^ ,], %d[^ ,], %lf[^ ,]",
                             &name, &age, &bBalance) != NULL)
        {
            printf("---------------- \n");
            printf("NAME: %s \n", name);
            printf("AGE: %d \n", age);
            printf("BANK BALANCE: %lf \n", bBalance);
        }
    }

这是程序应该输出的内容:

----------------
NAME: Jane
AGE: 50
BANK BALANCE: 400.600000

这是程序实际输出的内容:

----------------
NAME: Jane
AGE: 50
BANK BALANCE: 0.000000

谁能告诉我我在这里做错了什么?

如果您还需要什么,请在下方评论。

标签: cdoublescanf

解决方案


%d[^ ,],%d匹配一个十进制数字,然后[寻找一个文字[字符,但输入中没有,所以fscanf停止。

您可能一次只需要使用fscanf一个十进制数字,并编写额外的代码来检查它们之间的字符。


推荐阅读