将变量用户输入float转换为C中的字符数组?

时间:2017-06-09 06:18:45

标签: c string printf double

我在该计划中的目标是提示用户在一定范围内的金钱价值(浮动)以用于另一个功能。但是,使用一个字符数组作为输入,其他函数似乎更容易实现。我已经研究过使用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;}

感谢所有帮助和反馈,谢谢!

1 个答案:

答案 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);