c - 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
谁能告诉我我在这里做错了什么?
如果您还需要什么,请在下方评论。
解决方案
在%d[^ ,]
,%d
匹配一个十进制数字,然后[
寻找一个文字[
字符,但输入中没有,所以fscanf
停止。
您可能一次只需要使用fscanf
一个十进制数字,并编写额外的代码来检查它们之间的字符。
推荐阅读
- python - 正则表达式匹配一个字符串及其周围的 2 个字符
- html - 如何为最近的祖先提供 XPath?
- ios - Ionic IOS 谷歌登录移动“location.protocol”科尔多瓦
- javascript - Formik - 如何清除字段并显示自定义错误
- python - 如何在 python 3.8 中永久保存用户输入的数据?
- python - 如何使用 Telethon,python 仅接收来自电报频道的新消息
- django - pdfkit:包含水印的标题不重复
- c - 为什么 for 循环中的 printf 有人可以解释我吗?
- c# - 以编程方式设置 ListBox 以滚动到所选项目
- python - 未找到 在服务器上未找到请求的 URL。如果您输入了 URL... Flask 重定向不起作用