错误:将“ float”传递给不兼容类型“ const char *”的参数

时间:2019-03-27 02:38:59

标签: c cs50

我正在研究一种贪婪算法,在将float转换为int时遇到错误

#include <cs50.h>
#include <stdio.h>
#include <stdlib.h>

int main()
{
    float n;
    //checking if given input is valid or not
    do
    {
        n = get_float();
    }
    while(n<0);
    //converting dollar into cents
    float coins = n * 100;

     int x = atoi(coins) //getting error here???

....
}

2 个答案:

答案 0 :(得分:2)

atoi函数用于将字符串转换为整数。它期望char *作为指向字符串的参数。

您在这里不需要转换功能。您可以将float的值直接分配给int,任何小数部分都会被截断。

int x = coins;

但是请注意,如果coins的截断值超出int的范围,则可以调用undefined behavior

答案 1 :(得分:0)

atoi()将ascii转换为整数,而float不是int。检查头文件中的函数定义。我建议改为使用atof(),或者也许使用strtod()