С кодом.Почему мой код не возвращает правильное значение в main, но печатает правильное значение с помощью функции? - PullRequest
0 голосов
/ 25 ноября 2018

Моя цель - напечатать и сохранить строковое значение num и res и вернуть их для использования в main с помощью функций SetNum и SetRes AND, чтобы использовать их в арифметических операциях в последующем коде в функции main.Следующий код выдает

от 34 res до 4.80873 4.00000

, где 4.0000 должно быть значением res.Я хотел напечатать это, чтобы знать, действительно ли SetRes вернул правильное значение с плавающей запятой, но это не так.Как я могу исправить этот код?

Примечание: ObjectInt проверяет, является ли токен целочисленным, а ObjectFloat проверяет, является ли токен плавающим и объект сканируется в файле.

int setNum(const char* object)
{
    if (objectInt(object)) {
        int number, num;
        number = atoi(object);
        num = number;
        printf("num to %d\n", num);
    }
    else if (objectFloat(object)) {
        float numberf, numf;
        numberf = atof(object);
        numf = numberf;
        printf("num to %lf\n", numf);
    }
}

int setRes(const char* object)
{
    if (objectInt(object)) {
        int number, res;
        number = atoi(object);
        res = number;
        printf("res to %d\n", res);
    }
    else if (objectFloat(object)) {
        float resf;
        resf = atof(object);
        printf("res to %lf\n", resf);
        return resf;
    }
}

int main()
{
    char object[100];
    int number, result;
    float numf, resf;
    int flag = 0;
    //print number and res  if int
    if (objectInt(object)) {

        if (flag == 1) setNum(object);
        else setRes(object);
    }
    //print number and res  if float
    else if (objectFloat(object)) {

        if (flag == 1) setNum(object);
        else resf = setRes(object);
        printf("%lf", resf);
    }

    else if (strcmp(object, IsitNum) == 0) {
        flag = 1;
    }
    else if (strcmp(object, IsitRes) == 0) {
        flag = 2;
    }
}

Ответы [ 2 ]

0 голосов
/ 25 ноября 2018

Я получил доступ к resf сейчас, преобразовав объект в float, используя atof после вызова setRes

0 голосов
/ 25 ноября 2018

Ваша функция setRes() не возвращает значение, если условие if соответствует TRUTHY.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...