读书人

c语言改错解决办法

发布时间: 2012-04-27 11:57:44 作者: rapoo

c语言改错
#include <stdio.h>
#include <string.h>
char sumsz[20];
typedef unsigned char uchar;
typedef unsigned int uint;
char *itoa(int num,char *str,int radix)
{
/* 索引表 */
char index[]="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
uint unum; /* 中间变量 */
int i=0,j,k=0;
do
{
str[i++]=index[unum%(unsigned)radix];
unum/=radix;
}
while(unum);
str[i]='\0';
/* 将原来的“/2”改为“/2.0”,保证当num在16~255之间,radix等于16时,也能得到正确结果 */
for(j=k;j<=(i-1)/2+k;j++)
{
num=str[j];
str[j]=str[i-j-1+k];
str[i-j-1+k]=num;
}
strcpy(sumsz,str);
return str;
}
int main()
{
float number1;
char ch[20];
printf("请输入十进制数:");
scanf("%f\n",number1);
itoa((int)number1,ch,2);
printf("%s\n",strlwr(sumsz));
}
这个程序有什么问题?求解释

[解决办法]

#include <stdio.h>
#include <string.h>
char sumsz[64];//改大一些.
typedef unsigned char uchar;
typedef unsigned int uint;
char *itoa(int num,char *str,int radix)
{
/* 索引表 */
char index[]="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
uint unum=(unsigned)num;//初始化
int i=0,j,k=0;
do
{
str[i++]=index[unum%(unsigned)radix];
unum/=radix;
}
while(unum);
str[i]='\0';
/* 将原来的“/2”改为“/2.0”,保证当num在16~255之间,radix等于16时,也能得到正确结果 */
for(j=k;j<=(i-1)/2+k;j++)
{
num=str[j];
str[j]=str[i-j-1+k];
str[i-j-1+k]=num;
}
strcpy(sumsz,str);
return str;
}
int main()
{
int number1;
char ch[20];
printf("请输入十进制数:");
scanf("%d",&number1);
itoa(number1,ch,2);
printf("%s\n",(sumsz));
}

读书人网 >C语言

热点推荐