ошибка: передача float параметру несовместимого типа const char * - PullRequest
0 голосов
/ 27 марта 2019

Я работаю над жадным алгоритмом, в котором я получаю сообщение об ошибке при преобразовании числа с плавающей точкой в ​​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 ]

2 голосов
/ 27 марта 2019

Функция atoi используется для преобразования строки в целое число. Он ожидает char * в качестве аргумента, который указывает на строку.

Здесь вам не нужна функция преобразования. Вы можете назначить значение float непосредственно для int, и любая дробная часть будет усечена.

int x = coins;

Обратите внимание, что это может вызвать неопределенное поведение , если усеченное значение coins находится вне диапазона int.

0 голосов
/ 27 марта 2019

atoi() преобразует ASCII в целое число, а float не int.Проверьте определение функции в заголовочном файле.Вместо этого я предлагаю использовать atof() или, возможно, strtod().

...