关于进制转换的程序
#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];
这样才可以
#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;}