用C语言进行十进制和八进制的转换怎么做

2024年11月15日 06:23
有1个网友回答
网友(1):

如果输入是十进制字符串,输出是八进制字符串,则用如下dec2oct函数可实现转换

#include

int dec2oct(char *dec,char *oct){
    int num=0,i=0,t;
    char c;
    do{
        c=*dec;
        if(!c) return 0;  // 出错了,没找到10进制数
        if(c>='0' && c<='9') break; // 找到十进制数了
        else    dec++;
    }while(1);
    do{
        num = num*10 + (c-'0');
        c=*++dec;
        if(!c) break;   // 没有其他字符了
        if(c>='0' && c<='9') continue;   // 还有十进制字符,继续
        else break;    // 没有其他十进制字符了,退出
    }while(1);
    do{
        t = num % 8;
        oct[i] = t+'0';
        num = num / 8;
        if(num==0) break;
        i++;
    }while(1);
    for(t = (i+1)/2;t<=i;t++){
        num = oct[t];
        oct[t] = oct[i-t];
        oct[i-t]=num;
    }
    oct[i+1]='\0';
    return 1;
}
int main()
{
    char dec[20],oct[20];
    while(scanf("%s",dec)==1)
        if(dec2oct(dec,oct)) printf("%s\n",oct);
        else break;
    return 1;
}

该函数dec2oct先将输入字符串中的 10进制字符串转换成二进制数存下来,然后再将二进制数转换成八进制字符串。