【发布时间】: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)
我如何阅读没有空格的逗号分隔双精度数?
我尝试了以下方法:fscanf(file, "%lf[^,], &x) 但它不起作用。
文件将采用以下格式:
1.0,2.0,4.0
3.0,6.0,1.0
【问题讨论】:
fscanf(file, "%lf,", &x)
您直接使用,,而不是使用[^,] 正则表达式。
#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,因为您一次扫描一个值。