使用 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

C中的fscanf - 如何确定逗号?

用逗号作为小数分隔符解析双精度

在 Scala Java Play 框架中格式化没有小数的双精度并为数千添加逗号

使用随机逗号或点分隔符从文件中解析双精度

逗号与双精度点与访问数据库