我是C语言初学者,请问我的这段简陋代码哪里有问题,代码目的是输出一个数字的字符串形式。

#include<stdio.h>#include<stdlib.h>char*Ostring(int);char*Ostring(intinteger){inta=10... #include <stdio.h>
#include <stdlib.h>

char *Ostring(int);

char *Ostring(int integer)
{

int a = 10000; //a 为除数
int k = 0; //k 为偏移量
int count = 1; //count为元素的总个数

//求得与输入数字有相同位数的 a
while (integer / a == 0)
{
a /= 10;
}

//计算元素的总个数
int m = a;
for (;;)
{
if (integer < 0)
{
++count;
}
if (m == 1)
{
++count;
break;
}
m = m / 10;
++count;
}

//将数字代入指针
char *str = (char*)malloc(count * sizeof(char));

if (integer < 0)
{
*(str + 0) = '-';
++k;
++count;
}

for (; k < (count - 1); ++k)
{

*(str + k) = integer / a;
integer = integer % a;
a = a / 10;
}
*(str + count - 1) = '\0';

return str;
}

int main()
{
printf(" %s", Ostring(321));
return 0;
}
展开
 我来答
庄政警
2017-12-13 · TA获得超过9916个赞
知道大有可为答主
回答量:1113
采纳率:94%
帮助的人:887万
展开全部

integer / a是数值而不是数字字符

for (; k < (count-1); ++k)
{

*(str+k)=integer/a+'0';   //+'0'才是数字字符
integer=integer % a;
a=a/10;
}

还有你没有释放malloc出来的内存,main里最好有个指针接收函数返回的地址

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式