我有一个功能
void getXFromFile3(FILE* fptr){
double valueX;
fscanf(fptr, "%lf\n", &valueX);
printf("%lf", valueX);
}
并使用一些双数字文件data.dat。
其中一个是-0.572869279
,但我的功能打印为-0.572869
。
看起来我的号码被切断了。
任何想法我做错了什么?
答案 0 :(得分:2)
告诉scanf
告诉您扫描了多少个字符,然后告诉printf
在逗号后打印这个位数。
还有一个人需要在逗号之前处理符号和数字。
下面的代码假定前导零,输入中没有正号。
void getXFromFile3(FILE* fptr){
double x;
int n;
fscanf(fptr, "%lf%n", &x, &n);
printf("%.*lf", /* the l length modifier is optional */
n /* number of characters scanned */
- (x < 0.) /* one off for the minus sign, if any */
- ((int)log10(fabs(x)) + 1) /* off as many as digits before the comma */
- 1, /* one off for the comma */
x);
}
胡! ; - )