guybye 2023-02-23 19:23 采纳率: 100%
浏览 31
已结题

关于#ar#的问题:我想写一个把整型数字换成字符数组的函数我的程序如下#include <bits>(语言-c++)

我想写一个把 整型数字 换成 字符数组 的函数
我的程序如下

#include<bits/stdc++.h>
using namespace std;

zifu(int a){
    char str[20];
    sprintf(str,"%d",a);
    return str;
}

int main(){
    int m;
    cin>>m;
    cout<<zifu(m);
}

但是报错了,我也不知道问题在哪,请帮忙解答!

img

  • 写回答

1条回答 默认 最新

  • 社区专家-Monster-XH 2023-02-23 19:39
    关注

    基于Monster 组和GPT的调写:
    这个程序存在几个问题:

    • 函数zifu没有指定返回类型,应该使用char*或者string作为返回类型。
    • 函数zifu中的str是一个局部变量,函数结束后该变量将被释放。因此,返回指向该变量的指针是不安全的。你可以通过将str定义为静态变量或使用动态内存分配来避免这个问题。
    • 函数zifu中的sprintf可能会导致缓冲区溢出。你应该使用sprintf_s或者snprintf来避免这个问题。

    下面是修正后的代码:

    #include <bits/stdc++.h>
    using namespace std;
     
    char* zifu(int a){
        static char str[20];
        sprintf_s(str, 20, "%d", a);
        return str;
    }
     
    int main(){
        int m;
        cin >> m;
        cout << zifu(m);
    }
    
    
    

    或者使用std::string作为返回类型,避免了内存管理问题:

    #include <bits/stdc++.h>
    using namespace std;
     
    string zifu(int a){
        char str[20];
        sprintf_s(str, 20, "%d", a);
        return string(str);
    }
     
    int main(){
        int m;
        cin >> m;
        cout << zifu(m);
    }
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 3月3日
  • 已采纳回答 2月23日
  • 创建了问题 2月23日

悬赏问题

  • ¥15 微信小程序协议怎么写
  • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 java写代码遇到问题,求帮助
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看