使用scanf扫描浮点数和双精度数的最佳方法是什么?

时间:2010-07-19 16:57:19

标签: c

考虑这个例子:

float a;
double b;

scanf("%f%f", &a, &b);   // A
scanf("%Lf%Lf", &a, &b); // B
scanf("%f%Lf", &a, &b);  // C
scanf("%f%lf", &a, &b);  // D

2 个答案:

答案 0 :(得分:10)

您可以使用

scanf("%f %lf", &a, &b);

scanf类型说明符:

  • c :单个字符:读取下一个字符。如果指定了不同于1的宽度,则该函数读取宽度字符并将它们存储在作为参数传递的数组的连续位置中。最后不会附加空字符。
  • d :十进制整数:数字可选地以+或 - 符号开头。
  • e,E,f,g,G :浮点数:包含小数点的十进制数字,可选地前面带有+或 - 符号,可选地包含e或E字符和十进制数。有效条目的两个示例是-732.103和7.12e4
  • o :八进制整数。
  • s :字符串:这将读取后续字符,直到找到空格(空白字符被视为空白,换行符和制表符)。
  • u :无符号十进制整数。
  • x,X :十六进制整数。

调节剂

  • h :short int(对于d,i和n),或unsigned short int(对于o,u和x)
  • l :long int(对于d,i和n),或unsigned long int(对于o,u和x)或double(对于e,f和g)
  • L :long double(对于e,f和g)

来源:http://www.cplusplus.com/reference/clibrary/cstdio/scanf/

答案 1 :(得分:3)