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