C代码。为什么我的代码没有在main中返回正确的值,而是使用函数打印正确的值?

时间:2018-11-25 16:19:53

标签: c string function

我的目标是打印和存储num和res的字符串值,并使用SetNum和SetRes函数将它们返回在main中使用,并在main函数的后续代码中将它们用于算术运算。以下代码产生

  

num到34   解析为4.80873   4.00000

其中4.0000应该是res的值。我想打印它以了解SetRes是否实际上返回了正确的浮点值,但没有。我该如何纠正此代码?

注意:ObjectInt检查令牌是否为整数,ObjectFloat检查令牌是否为Float并在文件中扫描对象。

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 :(得分:0)

如果setRes()条件为TRUTHY,则您的if函数不会返回值。

答案 1 :(得分:0)

我现在通过调用setRes之后使用atof将对象​​转换为float来访问resf