使用 fscanf 读取逗号分隔的双精度
Posted
技术标签:
【中文标题】使用 fscanf 读取逗号分隔的双精度【英文标题】:Using fscanf to read comma delimited doubles 【发布时间】:2017-10-16 01:06:58 【问题描述】:我如何阅读没有空格的逗号分隔双精度数?
我尝试了以下方法:fscanf(file, "%lf[^,], &x)
但它不起作用。
文件将采用以下格式:
1.0,2.0,4.0
3.0,6.0,1.0
【问题讨论】:
试试fscanf(file, "%lf,", &x)
另见Problems scanning into array in C。
【参考方案1】:
您直接使用,
,而不是使用[^,]
正则表达式。
#include <stdio.h>
int main()
FILE *fp;
double buff[255];
int i=0;
fp = fopen("file.txt", "r");
while(fscanf(fp, "%lf,",&buff[i++])!=EOF)
printf("%0.1lf ", buff[i-1] );
fclose(fp);
【讨论】:
请注意,!= EOF
条件并不是一个好主意。如果用户键入字母而不是逗号,那么您的循环将无限期地继续。您应该查找== 1
,因为您一次扫描一个值。以上是关于使用 fscanf 读取逗号分隔的双精度的主要内容,如果未能解决你的问题,请参考以下文章
将带逗号的双引号作为分隔符从 S3 导入 Amazon Redshift