1 #include "stdio.h" 2 #include "stdlib.h" 3 4 /** 5 * Reads hexadecimal values from stdin and writes binary bytes to stdout. 6 * Accepts hex values separated by spaces, newlines, commas, etc. 7 * Handles both uppercase and lowercase hex digits. 8 */ 9 int main(void) { 10 char hexStr[3]; // Two hex digits + null terminator 11 int ch; 12 13 // Read characters until EOF 14 while((ch = getchar()) != EOF) { 15 hexStr[0] = (char)ch; 16 hexStr[1] = (char)getchar(); 17 hexStr[2] = '\0'; // Null-terminate string 18 char *endptr; 19 unsigned char byte = (unsigned char)strtol(hexStr, &endptr, 16); 20 fwrite(&byte, 1, 1, stdout); 21 if((ch = getchar()) == EOF) // Read seaparating space 22 break; 23 } 24 25 return 0; 26 } 27