Случайный интервал 1-255 для изображения в C

У меня есть функция, которая возвращает целое число, между 1 и 255. Есть ли способ превратить этот интервал в символ, я могу strcmp() к существующей строке.

В основном я должен создать строку букв (все значения ASCII) от PRNG. У меня есть все работающее минус интервал к символьной части. Существует нет Chr() функционируйте как в PHP.

5
задан Lorenzo Donati supports Monica 13 October 2013 в 23:05
поделиться

5 ответов

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.

8
ответ дан 18 December 2019 в 06:34
поделиться

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");
4
ответ дан 18 December 2019 в 06:34
поделиться

В Си char - это, по сути, int от 0 до 255, поэтому вы можете обращаться с целым числом непосредственно как с char, если хотите выполнить sprintf в буфер или что-то подобное. Возможно, вы захотите сделать так, чтобы ваша функция возвращала char, чтобы было понятно, что происходит.

1
ответ дан 18 December 2019 в 06:34
поделиться

Просто преобразуйте его в символ:

char c = (char)myRandomInt;
5
ответ дан 18 December 2019 в 06:34
поделиться

Просто приведите его к char (как показано ниже). Если вы собираетесь использовать его в строковой функции (strcat, strcmp и т. Д.), Тогда он должен быть в массиве символов с нулевым ограничителем (' \ 0' ) в конце (также показано ниже) ....

int num = myrand(1,255);

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

...

if(strcmp(str, otherString...
6
ответ дан 18 December 2019 в 06:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: