C++ c+中的随机字符和替换字符+;输出

C++ c+中的随机字符和替换字符+;输出,c++,arrays,string,random,C++,Arrays,String,Random,我正在写一个程序来反转一个字符串并在其中插入随机字符。 这是我的密码: main.cpp 请帮忙 您错过了两件重要的事情: 当您声明一个数组时,它的值没有定义(内存中的任何值) strlen计数到“\0”字符的第一次出现 为了使代码正常工作,必须初始化字符数组,这意味着更改这两行: char strreved[256]; char strenc[1024]; 致: 有没有任何理由不使用std::string而不是char数组?它会使事情变得简单很多。你似乎忘记了C++中的代码> char

我正在写一个程序来反转一个字符串并在其中插入随机字符。 这是我的密码: main.cpp


请帮忙

您错过了两件重要的事情:

  • 当您声明一个数组时,它的值没有定义(内存中的任何值)
  • strlen计数到“\0”字符的第一次出现
为了使代码正常工作,必须初始化字符数组,这意味着更改这两行:

char strreved[256];
char strenc[1024];
致:


有没有任何理由不使用
std::string
而不是char数组?它会使事情变得简单很多。你似乎忘记了C++中的代码> char < /Cord>字符串实际上被称为null结尾字节串。因为这是关于char数组的学习项目。这也会修复随机字符错误吗?空间与它无关,只是风格问题(我修复了它)。
#include <iostream>
#include <string>
int getRandom(int a, int b) {
    return a + (rand() % static_cast<int>(b - a + 1));
}
using namespace std;
void enc(char message[256]) {
    int i = 0;
    int len =   strlen(message);
    int revlen =    len - 1;
    int wtpselector;
    int charselector;
    int encsim;
    char randchar[6] =  "@#$%&";
    char strreved[256];
    char strenc[1024];
    while (i <  len) {
        strreved[revlen]    =   message[i];
        i++;
        revlen--;
    }
    revlen =    strlen(strreved);
    len =   revlen - 1;
    i = 0;
    encsim =    0;
    while (i <  revlen) {
        wtpselector =   getRandom(0, 4);
        charselector =  getRandom(0, 4);
        if (wtpselector ==  0) {
            strenc[encsim]  =   strreved[i];
            i++;
            encsim++;
        } else {
            strenc[encsim]  =   randchar[charselector];
            encsim++;
        }
    }
    cout << strenc << endl;
}
Input: hello world
Output: $%@$#&&d&&@%$%1%row &#$$@%&ol@%#@%&1%&#$&#ehe$%%€@@8@&%@$#& #%@@%&¢&@%#&#$#@$#%%##&%#@&#&$8%#$#@#$@$@#%&&@&#@Q#$$#&¢%@% Q#\#&$@#{&&&&$@¢ \ $$$$@@@@@#&&&%%&&%{ $@¢v#&@&~u@@@@%&%¢
char strreved[256];
char strenc[1024];
char strreved[256] = {0};
char strenc[1024] = {0};