Random int 1-255 to character in C

c, char, int, random

Solution

A `char` in C can only take values from `CHAR_MIN` to `CHAR_MAX`. If `char` is signed, `CHAR_MAX` may be less than 255 (for example, a common value is 127). If `char` is unsigned, `CHAR_MAX` has to be at least 255.

Assuming your `char` is unsigned, you can just assign the random number to a `char` (in your string for example). If `char` is signed, you have to be more careful. In this case, you probably want to assign the value mod 128 to your `char`.

In fact, since you are dealing with ASCII, you may want to do that anyway (ASCII is only up to 127).

Finally, obligatory portability remark: a `char`'s value as an integer may not represent its ASCII value, if the underlying encoding is not ASCII—an example is EBCDIC.

Problem

I have a function that returns an integer, between 1 and 255. Is there a way to turn this int into a character I can `strcmp()` to an existing string. Basically, I need to create a string of letters (all ASCII values) from a PRNG. I've got everything working minus the int to char part. There's no `Chr()` function like in PHP.

Original source