阿char用C只能取从值CHAR_MIN到CHAR_MAX.如果char已签名,则CHAR_MAX可能小于255(例如,公共值为127).如果char是无符号的,CHAR_MAX则必须至少为255.
假设您char是未签名的,您可以将随机数分配给char(例如,在您的字符串中).如果char签名,你必须更加小心.在这种情况下,您可能希望将值mod 128分配给您的char.
实际上,由于您正在处理ASCII,因此您可能希望这样做(ASCII最多只能达到127).
最后,强制性可移植性注释:char如果底层编码不是ASCII,则作为整数的值可能不代表其ASCII值 - 例如EBCDIC.
只需将其投射到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)
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)