У меня есть функция, которая возвращает целое число, между 1 и 255. Есть ли способ превратить этот интервал в символ, я могу strcmp()
к существующей строке.
В основном я должен создать строку букв (все значения ASCII) от PRNG. У меня есть все работающее минус интервал к символьной части. Существует нет Chr()
функционируйте как в PHP.
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.
A char
- это просто целое число с диапазоном значений 255
и символьными литералами, такими как «a»
- это тоже просто число.
Просто преобразовать в char.
char C = 67;
char c = 'c';
char zero = 'c' - 'c';
char also_zero = c - 'c';
/*Note: zero == 0*/
Чтобы использовать что-то вроде strcmp
, вам понадобится char *
. Функция ожидает указатель на первый элемент массива символов (заканчивающийся нулем), а не адрес одного символа.
Итак, вы хотите:
char szp[] = {c, '\0'};
int isDifferent = strcmp(szp, "c");
В Си char
- это, по сути, int
от 0 до 255, поэтому вы можете обращаться с целым числом непосредственно как с char, если хотите выполнить sprintf в буфер или что-то подобное. Возможно, вы захотите сделать так, чтобы ваша функция возвращала char
, чтобы было понятно, что происходит.
Просто преобразуйте его в символ:
char c = (char)myRandomInt;
Просто приведите его к char
(как показано ниже). Если вы собираетесь использовать его в строковой функции (strcat, strcmp и т. Д.), Тогда он должен быть в массиве символов с нулевым ограничителем (' \ 0'
) в конце (также показано ниже) ....
int num = myrand(1,255);
char str[2] = {(char)num, '\0'};
...
if(strcmp(str, otherString...