送分问题!来者有分!!!
char *intstrtosavechars(char *mintstr,int mlen)
{
unsigned long int mint;
int m,j,i,ilen;
char retstr[512];
char str[512];
memset(retstr,0,sizeof(retstr));
memset(str,0,sizeof(str));
mint=atol(mintstr);
printf("mint=%lu\n",mint);
j=0;
while(mint>0)
{
m=mint%256;
printf("m==%d\n",m);
str[j]=(char)m;
mint=mint/256;
printf("%c\n",str[j]);
j=j+1;
}
printf("========%s\n",str);
ilen=strlen(str);
if(ilen>=mlen)
{
for(i=0;i<mlen;i++)
retstr[i]=str[i];
}
else
{
for(i=0;i<mlen-ilen;i++)
retstr[i]=(char)0;
j=mlen-ilen;
for(i=0;i<ilen;i++)
{
retstr[j]=str[i];
j=j+1;
}
}
printf("result:=%s %d\n",retstr,strlen(retstr));
}
调用函数intstrtosavechars("123456789",6)
为什么 printf("result:=%s %d\n",retstr,strlen(retstr));输出没有任何值?
问题点数:30、回复次数:9Top
1 楼zhangchaokun(lywin)回复于 2004-09-03 18:03:38 得分 5
难道连result:=都没有Top
2 楼jg01ty()回复于 2004-09-03 18:04:32 得分 0
result:=有啊Top
3 楼blue_coco(椰子)回复于 2004-09-03 18:06:31 得分 9
哈哈,
试试,改:
str[j]=(char)m+'0';Top
4 楼zqpsswh(似水无痕)回复于 2004-09-03 18:06:45 得分 1
全部拿上来看看Top
5 楼wanamaker()回复于 2004-09-03 18:07:26 得分 8
retstr[0]已经被清为0了,strlen(retstr)就也为0,所以输出"result:= 0"Top
6 楼jg01ty()回复于 2004-09-03 18:12:04 得分 0
TO:WANAMAKER
retstr[0]已经被清为0了,strlen(retstr)就也为0,所以输出"result:= 0"
我如果把这句retstr[i]=(char)0;改为retstr[i]=(char)1;就没问题,这是什么原因。Top
7 楼wanamaker()回复于 2004-09-03 18:35:36 得分 4
因为在c语言里,字符串是以0结尾的呀,如果retstr[i]为0,就表示字符串结束了,长度是i.Top
8 楼greenteanet(扎扎实实打基础,保持一颗平常心。)回复于 2004-09-04 13:14:32 得分 0
我要补课Top
9 楼suifengxing()回复于 2004-09-04 13:47:10 得分 3
result没对应的值啊Top




