C++ C++;按输入的相反顺序,将其打印为字符*

C++ C++;按输入的相反顺序,将其打印为字符*,c++,compiler-errors,C++,Compiler Errors,我必须颠倒输入的顺序(用户输入),然后用变量ret打印出颠倒的顺序。如果你转到我的代码中的第33行,你会看到cout你对输入的数字有正确的理解 缺少的部分是将它们转换为表示这些数字的chars。幸运的是,所有表示数字的字符都是连续的,因此它们都可以表示为该数字与字符'0'的偏移量: //指令给出的函数定义 char*reserve_num_from_int_to_char(int num){ //注意:您正在使用new-here分配阵列, //因此,在使用完结果后,必须将其删除 字符*输出=新字

我必须颠倒输入的顺序(用户输入),然后用变量
ret
打印出颠倒的顺序。如果你转到我的代码中的第33行,你会看到
cout你对输入的数字有正确的理解

缺少的部分是将它们转换为表示这些数字的
char
s。幸运的是,所有表示数字的字符都是连续的,因此它们都可以表示为该数字与字符
'0'
的偏移量:

//指令给出的函数定义
char*reserve_num_from_int_to_char(int num){
//注意:您正在使用new-here分配阵列,
//因此,在使用完结果后,必须将其删除
字符*输出=新字符[100];
int i=0;
while(num>0){
//得到数字
整数位数=num%10;
//将其转换为字符
输出[i]=“0”+位;
++一,;
//转到下一个数字
num/=10;
}
//不要忘记终止“\0”以使其成为有效的c字符串:
输出[i]='\0';
返回输出;
}

您对输入的数字进行检查的想法是正确的

缺少的部分是将它们转换为表示这些数字的
char
s。幸运的是,所有表示数字的字符都是连续的,因此它们都可以表示为该数字与字符
'0'
的偏移量:

//指令给出的函数定义
char*reserve_num_from_int_to_char(int num){
//注意:您正在使用new-here分配阵列,
//因此,在使用完结果后,必须将其删除
字符*输出=新字符[100];
int i=0;
while(num>0){
//得到数字
整数位数=num%10;
//将其转换为字符
输出[i]=“0”+位;
++一,;
//转到下一个数字
num/=10;
}
//不要忘记终止“\0”以使其成为有效的c字符串:
输出[i]='\0';
返回输出;
}

附录:如果修改函数以接受指向
char
数组的指针和
char
数组的长度,则在大多数情况下,您无需动态分配。用户将创建一个本地数组,调用
reserve\u num\u from\u int\u to\u char
reverse\u num\u from\u int\u to\u char
?),然后在处理完该数组后,让该数组超出范围。@user4581301 True'dat。这的确是一个更简洁的设计,但我不确定是否允许修改函数的签名,或者是否没有任何线索。这只是询问者或跟随者的一个选项。附录:如果函数被修改为接受指向
char
数组的指针和
char
数组的长度,那么在大多数情况下,您可以消除动态分配的需要。用户将创建一个本地数组,调用
reserve\u num\u from\u int\u to\u char
reverse\u num\u from\u int\u to\u char
?),然后在处理完该数组后,让该数组超出范围。@user4581301 True'dat。这的确是一个更简洁的设计,但我不确定是否允许修改函数的签名,或者是否没有任何线索。这只是询问者或跟随者追求的一个选择。
#include <sstream>
#include <string.h>
using namespace std;

char* reserve_num_from_int_to_char(int num){
    
    char* output = new char[100];
    
    
    
    return output;
}

int main()
{
    int input, reversednumber = 0, remainder;
    cout << "input : " << endl;
    cin >> input;
    char* ret = reserve_num_from_int_to_char(input);
    
    while(input != 0) {
        remainder = input%10;
        reversednumber = reversednumber*10 + remainder;
        input /= 10;
    }
    
    stringstream strs;
    strs << reversednumber;
    string temp_str = strs.str();
    char* char_type = (char*)temp_str.c_str();
    ret = char_type;
    cout << "output : " << ret << endl;
    
    delete[] ret;
    return 0;
}```