我的程序将输入的数字转换为所需的基数。但我想检查数字的当前基数。例如:基数 1 是 3,输入的数字是 4,所以这是不可能的。我编写了函数来检查它。但它不起作用。我的错在哪里?
#include <stdlib.h>
#include <stdio.h>
int check(int tmp_number , int source_base)
{
int check = 0 ;
char msg[tmp_number];
sprintf(msg, "%d", tmp_number);
int i=0;
if(source_base>tmp_number)
{
return 1;
}
while( tmp_number )
{
if(check<source_base)
{
check = tmp_number % 10 ;
tmp_number /= 10 ;
i++;
}
}
if (sizeof(msg)==i)
{
return 1;
}
else
{
return 0;
}
}
int main()
{
int tmp_number=1;
int decimal=0;
int source_base,target_base;
char s[9];
int i=0;
do
{
printf("Enter the base1\n");
scanf("%d",&source_base);
printf("Enter the number\n");
scanf("%d",&tmp_number);
} while (!check(tmp_number,source_base));
printf("Enter the base2\n");
scanf("%d",&target_base);
while( tmp_number )
{
decimal += (tmp_number % 10) * pow( source_base, i ) ;
tmp_number /= 10 ;
++i ;
}
itoa(decimal, s, target_base);
printf("The result is %s\n", s);
getchar();
getchar();
return 1;
}