【发布时间】:2016-09-06 20:31:53
【问题描述】:
所以我正在编写一个简单的 c 代码,它将一个数字转换为一个字符串,但有一件事我不清楚。在此代码上:
void itos(int a,char *p){
int pom = a;
do{
p++;
pom/=10;
}while(pom);
*p = '\0';
do{
pom = a%10 + '0';
*--p = pom;
a/=10;
}while(a);
}
我不断收到分段错误,我不明白为什么。字符串是通过地址传递的,所以 main 中的字符串不应该在函数中具有对字符串的访问权限吗?另一方面,这段代码运行良好:
char *itos(int a,char *p){
int pom = a;
do{
p++;
pom/=10;
}while(pom);
*p = '\0';
do{
pom = a%10 + '0';
*--p = pom;
a/=10;
}while(a);
return p;
}
如果有人能解释我的差异(尤其是为什么第一个不起作用),我会非常感激。
【问题讨论】:
-
两者只是返回值不同,请同时贴出调用该函数的代码
-
已经得到答案。指针未正确初始化。感谢您的帮助!
标签: c