随机int 1-255到C中的字符

jmo*_*i45 5 c random int char

我有一个函数返回一个介于1和255之间的整数.有没有办法把这个int变成一个字符,我可以strcmp()现有的字符串.

基本上,我需要从PRNG创建一个字母串(所有ASCII值).我有一切工作减去int到char部分.没有Chr()像PHP那样的功能.

Alo*_*hal 8

char用C只能取从值CHAR_MINCHAR_MAX.如果char已签名,则CHAR_MAX可能小于255(例如,公共值为127).如果char是无符号的,CHAR_MAX则必须至少为255.

假设您char是未签名的,您可以将随机数分配给char(例如,在您的字符串中).如果char签名,你必须更加小心.在这种情况下,您可能希望将值mod 128分配给您的char.

实际上,由于您正在处理ASCII,因此您可能希望这样做(ASCII最多只能达到127).

最后,强制性可移植性注释:char如果底层编码不是ASCII,则作为整数的值可能不代表其ASCII值 - 例如EBCDIC.


Soa*_*Box 6

只需将其投射到char(如下所示).如果你要在一个字符串函数(strcat的,STRCMP等),使用它,那么它必须是在字符数组与空终止符(" \0')结尾(如下所示)....

int num = myrand(1,255);

char str[2] = {(char)num, '\0'};

...

if(strcmp(str, otherString...
Run Code Online (Sandbox Code Playgroud)


Ano*_*on. 5

只需将其转换为char:

char c = (char)myRandomInt;
Run Code Online (Sandbox Code Playgroud)


Bri*_*ndy 4

Achar只是一个具有一定范围255值的整数,像这样的字符文字'a'也只是一个数字。

只需转换为字符即可。

char C = 67;
char c = 'c';
char zero = 'c' - 'c';
char also_zero = c - 'c';
/*Note: zero == 0*/
Run Code Online (Sandbox Code Playgroud)

要使用像strcmp你这样的东西需要一个char*。该函数需要一个指向字符数组的第一个元素(以零结尾)的指针,而不是单个字符的地址。

所以你要:

char szp[] = {c, '\0'};
int isDifferent = strcmp(szp, "c");
Run Code Online (Sandbox Code Playgroud)