读书人

关于进制变换的程序

发布时间: 2012-10-15 09:45:24 作者: rapoo

关于进制转换的程序
#include "stdio.h"
#include "math.h"
#include "string.h"

int BinaryToDecimal(char bin[])
{
int dec = 0;
int i;
for (i = 0;'0' != bin[i];i++)
{
dec += bin[i] * (pow(2.0,i));
}
return dec;
}


int main()
{
int decimal = 0;
char *binary[4]={0};
printf("Please input a binary number!\n");
gets(binary[4]);
decimal = BinaryToDecimal(binary[4]);
printf("decimal = %d\n",decimal);
return 0;

}

在输入了2进制代码后就会出现错误导致结束程序.
我用的是VS2010,我是WIN7 64位的.

[解决办法]
这个其实是你定义了一个指针没有申请空间而已。
char *binary[4]={0};
这你是定义了四个指针,但是gets的时候你没有给他分配空间。

比如char *p; p = (char *)malloc(10 * sizeof(char));就相当于char p[10];
这样才可以

C/C++ code
#include <stdio.h>#include "math.h"#include "string.h"#include <stdlib.h>int BinaryToDecimal(char bin[]){    int dec = 0;    int i;    for (i = 0;'0' != bin[i];i++)    {        dec += bin[i] * (pow(2.0,i));    }    return dec;}int main(){    int decimal = 0;    char *binary[4]={0};    binary[4] = (char *)malloc(10 * sizeof(char));    printf("Please input a binary number!\n");    gets(binary[4]);    decimal = BinaryToDecimal(binary[4]);    printf("decimal = %d\n",decimal);    free(binary[4]);    return 0;} 

读书人网 >C语言

热点推荐