将多个值从一个函数返回到另一个函数

时间:2014-05-02 11:16:33

标签: c function return

从下面的函数termpro我想在另一个函数中使用coeff和power并尝试以下行但它会给我一个值而另一个为0

// Term是一个字符数组

int power,coef=termspro(term); 
 printf("POWER : %d\n",power);
 printf("COEF : %d\n",coef);

          int termspro(char term[20]){
    int i,m=0,j=0,coeff=0,power=0;
    char coef[10], powerr[10];
    char *p;
    memset(&coef[0],'\0',sizeof(coef));
    memset(&powerr[0],'\0',sizeof(powerr));
    int termLen=strlen(term);
    for(i=0;i<termLen; i++){
        if(term[i]=='-')
            m++;
        if((term[i]>='0'&&term[i]<='9')&&(term[i-1]!='^')&&(term[i-2]!='^')&&(term[i-3]!='^')&&(term[i-4]!='^')){
            coef[j]=term[i];
            j++;
        }
    }
    //printf("this term's coef = %s\n",coef);
    int coefLen=strlen(coef);
    for(i=0;i<coefLen;i++){
        coeff= (coeff*10)+((int)coef[i]-48);
    }

    //To get the sign :
    if(m%2!=0)
        coeff*=-1;
    //THE COEF IS DAMN READYYYYYYY :D !!
    printf("COEF : %d\n",coeff);
    //To get the power :
    p=strchr(term,'^');
    char delm[2]="^";
    if(p != NULL)
    {
        strcpy(powerr,p);
    }
    //printf("this term's power = %s\n",powerr);
    int powerLen=strlen(powerr);
    for(i=1;i<powerLen;i++){
        power= (power*10)+((int)powerr[i]-48);
    }
    printf("POWER : %d\n",power);
    return coeff,power;
}

1 个答案:

答案 0 :(得分:0)

您不能从C中的函数返回多个值。替代方法是将变量的指针(可以保存所需的值)作为参数传递给函数。这样调用函数可以从被调用函数中获取值。

另一种选择是使返回类型成为struct的结构或指针,它可以包含多个值。