首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

c语言改错解决办法

2012-04-27 
c语言改错#include stdio.h#include string.hchar sumsz[20]typedef unsigned char uchartypedef un

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));
}

热点排行