gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 19:34:03 24 4
gpt4 key购买 nike

我在程序中的目标是提示用户输入一定范围内的货币值( float )以在另一个函数中使用。然而,使用字符数组作为输入来完成另一个函数似乎更容易。我研究过使用 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_mount 是用户输入的 float ,amount 是字符数组。前任:5555.55 = {"5,5,5,5,.,5,5"}

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

最佳答案

如果 amount 是足够大小的字符数组,那么在调用 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) {
<小时/>

读取float时,应该通过指针来完成(检查附加的&字符):

scanf("%.2f", &entered_amount);

关于将变量用户输入 float 转换为 C 中的字符数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44450595/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com