我在该计划中的目标是提示用户在一定范围内的金钱价值(浮动)以用于另一个功能。但是,使用一个字符数组作为输入,其他函数似乎更容易实现。我已经研究过使用sprintf和snprintf,但我不确定如何使用变量输入而不是常量来实现这些。
此号码传递给的函数需要将数字转换为书面文字。例如:1150.50 =一千一百五十美元五十美分。
以下是我尝试实施的代码段;
do {
puts("Please enter the amount of the paycheck, this must be from 0$ to 10000$: \n");
scanf("%.2f", entered_amount);
if (entered_amount < 0.00 && entered_amount > 10000.00) {
printf("This is not a valid amount, please try again! \n\n");
}
} while (entered_amount < 0.00 && entered_amount > 10000.00);
sprintf(amount, "%f", entered_amount);
//Trying to convert a float entered by the user to an array of characters to use in the number_to_word function!
printf("%s", amount);
其中,entered_amount将是用户输入float,而amount将是 char的数组。例如: 5555.55 = {&#34; 5,5,5,5,。,5,5&#34;}
感谢所有帮助和反馈,谢谢!
答案 0 :(得分:0)
如果amount
是足够大小的char数组,那么在调用sprintf之后,您就拥有了所需的结构。
sprintf(amount, "%f", entered_amount);
您可以在尝试时printf
轻松打印。
printf("%s", amount); //Print entire array
//Print char by char
size_t i = 0;
for (i = 0; i < strlen(amount); i++)
printf("%c", amount[i]);
问题更多的是你的if语句检查范围。
if (entered_amount < 0.00 && entered_amount > 10000.00) {
永远不会执行。请改用:
if (entered_amount < 0.00 || entered_amount > 10000.00) {
当读取浮点数时,你应该通过指针(检查其他&amp; 字符)来执行此操作:
scanf("%.2f", &entered_amount);