C++随机字符
C++ random char
我正在尝试生成这样的随机字符:
char* test = "myname" + GenerateRandomChar();
我试着在不使用字符串的情况下完成它。所以请不要说使用字符串。感谢
如果您正在编写c代码(看起来是这样),那么就执行
char buff[8]; //sizeof("myname") + 1 + 1
sprintf(buff,"myname%c", GenerateRandomChar());
我假设GenerateRandomChar存在并工作于
试试这样的东西:
char[] test = "myname "; // note char[] instead of char*
test[6] = GenerateRandomChar();
char GenerateRandomChar()
{
return (char) (random(127-33) + 33);
}
您可以向缓冲区添加sizeof,使其与字符长度无关:
#include <cstdio>
#include <iostream>
char getRandomChar(){
static char c = 'A' + rand()%24;
return c;
}
int main ()
{
srand((unsigned)time(0));
char str[] = "test";
char buffer[sizeof(str)+1];
char rnd = getRandomChar();
sprintf(buffer, "%s%c",str,rnd);
std::cout << buffer << std::endl;
}
请注意,getRandomChar()
函数只提供大写字母。如果你想要小写的话,你需要把它写得更精致一点。
这个解决方案假设您在编译时知道初始字符串的大小。
当前的代码不正确,原因有两个:
- 您正在执行从
const char*
到char*
的不推荐使用的转换。它不应该编译 - 您正在执行指针运算,而不是串联运算
以下表达式:
"myname" + c
其中c
是某些char
不执行级联,而是执行指针运算。类似于:
char *ptr = "myname";
char c = ' '; // ASCII equivalent is 32
int n = (int) c;
char *s = ptr + n; // s now points out of bounds of ptr
如果您坚持执行C风格的代码,那么您需要使用标准库函数strcpy
,可能还有strcat
。示例:
#include <cstdlib>
#include <cstring>
#include <iostream>
char foo() {
// return a random character here
}
int main() {
const char* myname = "myname";
// enough room to contain new character
// and null terminator
char* buffer = new char[strlen(myname) + 2];
// strcpy includes the null terminator
strcpy(buffer, myname);
// We overwrite myname's null terminator
buffer[strlen(myname)] = foo();
buffer[strlen(myname) + 1] = ' ';
std::cout << buffer;
delete[] buffer;
}
相关文章:
- 为什么 Serial.println(<char[]>);返回随机字符?
- 字符串-C++后显示的随机字符
- 将字符随机转换为大写的函数
- 生成随机.txt文件,10行,10列。充满随机:"*"、"#"、"@"。然后将随机字符替换为'P'
- 在 c++ 的 10x10 数组中生成特定数量的多个随机字符
- 使用指针编译代码后,.cpp文件将变为随机字符
- 生成随机字符/数字
- 随机字符,从强制转换 Arduino 字符串到 Excel BSTR 通过 c++ DLL
- 字符数组中的十六进制导致写入套接字时出现随机字符
- 如何在网格中放置随机字符
- 解压缩 TIFF 数据会打印随机字符
- 将一个随机的字符序列和int序列解析为单独的向量
- 尝试以随机字符(长读取)打印字符串返回结果
- 取消随机排列整数/字符数组
- UNIX API 调用:使用 read() 函数打开文件并将其打印到屏幕上会增加额外的随机字符
- 如何修复C++中的随机字符输出?
- 为什么从函数返回c弦乐会导致随机字符
- 生成唯一的随机字符并将其保存在数组中
- 编译器将随机字符添加到我的 char 数组中
- 随机化字符数组以显示随机密码