求解C++问题:整数转换为字符串。编译无错,运行崩溃

附加信息 2013-04-12 08:40:23
将整数转换成字符串,利用指针形式
代码如下:
#include <iostream>
using namespace std;
void change(int number,char *s);

void main()
{
int number;
char *s;
cout<<"please input integer:"<<endl;
cin>>number;
change(number,s);
cout<<*s<<endl;

}

void change(int number,char *s)
{
if (0 == number)
{
*s = '\0';
return ;
}
change(number/10, s);//为什么此处的函数调用s不用加“*”
while (*s)
s++;
*s=number%10 + '0';
*s = '\0';

}
...全文
189 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
lidong2140 2013-04-16
  • 打赏
  • 举报
回复
#include <iostream>
using namespace std;
void change(int number,char *s);

int main()
{
    int number;
    char s[30];       //记得分配空间并初始化
    memset(s,'\0',30);
    cout<<"please input integer:"<<endl;
    cin>>number;
    change(number,s);
    cout<<s<<endl;
    return 0;
}

void change(int number,char *s)
{
    if (0 == number)
    {
        return ;
    }
    change(number/10, s);//为什么此处的函数调用s不用加“*”
    while (*s)
        s++;
    *s=number%10 + '0';
    //这里你以前写错了
}
图灵狗 2013-04-13
  • 打赏
  • 举报
回复
++,改为char s[81];
引用 1 楼 adlay 的回复:
char *s; 都没初始化呀!
www_adintr_com 2013-04-13
  • 打赏
  • 举报
回复
cout<<s<<endl; 不是 cout<<*s<<endl;
附加信息 2013-04-13
  • 打赏
  • 举报
回复
引用 2 楼 turingo 的回复:
++,改为char s[81];

我按照你所说的,将主函数中的char *s;改为char s[81];了,编译没有错误了,也运行了。程序没有崩溃。但是,没有出来想要的“将整数转换为字符串”的结果呢。就像下面运行显示的那样:
附加信息 2013-04-13
  • 打赏
  • 举报
回复
引用 1 楼 adlay 的回复:
char *s; 都没初始化呀!
我后面调用函数里面的number也是以形参的方式出现的呀,没有错误。
www_adintr_com 2013-04-12
  • 打赏
  • 举报
回复
char *s; 都没初始化呀!

5,530

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 模式及实现
社区管理员
  • 模式及实现社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧