Does anyone know how the isgraph() function works in C? I understand its use and results, but the code behind it is what I’m interested in.
For example, does it look at only the char value of it and compare it to the ASCII table? Or does it actually check to see if it can be displayed? If so, how?
The code behind the
isgraph()function varies by platform (or, more precisely, by implementation). One common technique is to use an initialized array of bit-fields, one per character in the (single-byte) codeset plus EOF (which has to be accepted by the functions), and then selecting the relevant bit. This allows for a simple implementation as a macro which is safe (only evaluates its argument once) and as a simple (possibly inline) function.where
__charmapand__PRINTare names reserved for the implementation. The+1part deals with the common situation whereEOFis-1.According to the C standard (ISO/IEC 9899:1999):
And: