找错:把整型转化为字符串

来源:百度知道 编辑:UC知道 时间:2024/06/05 08:15:05
下面代码想使用指针来把int n=12345转化为字符串,编译没错误,但运行时说“段错误”,应该是操作内存出错了。找了几遍,不知道错在哪里。请高手帮忙看看。
#include<stdio.h>
#include<string.h>

int main()
{
int num,temp,n=12345;
char *start0,*start,*end;
char *str=NULL;
str=(char *)malloc(50); //申请内存
if(str=NULL){
printf("Can't malloc in the heap!\n");
exit(-1);
}
start0=start=str; //先把str指针的最初地址存起来,存到start0、start
while(n>0){
*str++=n%10+'0'; //从整型最后一位开始转化为字符存到str
n=n/10;
}
*str='\0'; //str最后一位存结束符
num=strlen(start0)/2;
end=str-1;
while(num--){ //把字串逆序,循环一半的元素num就够了。
temp=*start;
*start++=*end--;
*end=temp;
}
printf("The result str=%s\n",start0);

}

#include<stdio.h>
#include<string.h>
main()
{
int num,temp,n=12345;
char *start0,*start,*end;
char *str=NULL;
str=(char*)malloc(50); //申请内存
if(str==NULL){
printf("Can't malloc in the heap!\n");
exit(-1);
}
start0=start=str; //先把str指针的最初地址存起来,存到start0、start
while(n>0){
*str++=n%10+'0'; //从整型最后一位开始转化为字符存到str

n=n/10;
}
*str='\0'; //str最后一位存结束符
num=strlen(start0)/2;
end=str-1;
while(num--){ //把字串逆序,循环一半的元素num就够了。
temp=*start;
*start=*end;
*end=temp;
start++;
end--;
}
printf("The result str=%s\n",start0);

}
运行正常了

楼主你犯了个很低级的错误,在你测试分配内存是否成功时,你的条件语句是if(str=NULL)具体的就不用我说了吧,看在我用手机回答问题,比较辛苦的份上,给分吧

if(str=NULL)应该是==