这个问题类似于我在Why am not getting the right char values from scanf(c Linux vi) when scanning a file?之前提出的问题。
我从这个问题的答案中了解到,你可以使用scanf like scanf(“%c”)在阅读角色时跳过空格和白线。有这样的捷径你也可以用钱吗?假设用户在标准输入中输入$ 4.22。是否有scanf可以跳过特殊字符,然后将该金额解释为浮点数?或者你只需要首先扫描角色然后扫描浮动金额吗?
答案 0 :(得分:1)
如果您确定肯定会有$,那么您可以将其包含在格式中,例如scanf(“$%d。%d”,& dollar,& cents)。试试吧!
$ cat scan.c
#include <stdio.h>
int main()
{
int dollars, cents;
scanf("$%d.%d", &dollars, ¢s);
printf("That's %d dollars and %d cents.\n", dollars, cents);
return 0;
}
$ make scan
cc scan.c -o scan
$ ./scan
$4.22
That's 4 dollars and 22 cents.
$
答案 1 :(得分:0)
这样的快捷方式是否也可以用钱?
不幸的是,不是语言本身的一部分。但是你肯定会使用这样一个库。您只需麻烦编译/链接它,并确保在动态链接时分发它。
跳过特殊字符,然后将该金额解释为浮点数?
注意!不要将货币表示为浮点数。它用来近似实数的行为不适合货币。它会引入不准确之处。
What Every Computer Scientist Should Know About Floating-Point Arithmetic是一个受欢迎的参考(虽然可能有点压倒性)。