为什么程序出现段错误呢?怎么改?

#include<stdio.h>
#include<string.h>

char* itoa(int i,char *p)
{
char *q=NULL;
if(p == NULL)
{
return NULL;
}
p[0]=(i / 10000) + '0';
i=i % 10000;
p[1]=(i / 1000) + '0';
i=i % 1000;
p[2]=(i / 100) + '0';
i=i % 100;
p[3]=(i / 10) + '0';
i=i % 10;
p[4]=i + '0';
p[5]='\0';
q = p;
while(*q != '\0' && *q == '0')
q++;
if(*q != '\0')
strcpy(p,q);
return p; 
}
int main(void)
{
char buf[10];
int a=1;
//memset(buf,0x00,sizeof(buf));
printf("%s\n",itoa(a,buf));
}

摇曳的蔷薇
浏览 57回答 1
1回答

大话西游666

代码本身没错误,加上memset应该没问题(或者贴错误信息);itoa函数只处理5位,保证a值即可
打开App,查看更多内容
随时随地看视频慕课网APP