「if処理が複雑になる場合 mappingで解決する」(C.C.より)
という常識。
/* それなりに見れる文字にする */ char *dumpchar( unsigned char byte ) { static char tmp[8] = {0}; // 8bit Ascii if( byte >= 0x80 ) { byte -= 0x80; if( byte < ' ' ) sprintf( tmp,"%c%c", '^' , byte + 0x40 ); else sprintf( tmp,"%c%c", ' ' , byte ); } else { if( byte < ' ' ) sprintf( tmp,"%c%c", '-' , byte + 0x40 ); else sprintf( tmp,"%c%c", '#' , byte ); } return tmp; }
はい、複雑ですね('A`)
if 文が入り組んでいて ややこしいですねー
読めませんねー
/* それなりに見れる文字にする */ char *dumpchar( unsigned char byte ) { static char tmp[8] = {0}; char mark[2][2] = { /* 普通の文字 コントロールコード */ ' ', '^', /* 0x00 */ '#', '-', /* 0x80 */ }; unsigned char mask[2][2] = { /* 普通の文字 コントロールコード */ 0x00, +0x40, /* 0x00 */ -0x80, -0x80+0x40, /* 0x80 */ }; sprintf( tmp,"%c%c", mark[(byte >= 0x80)][((byte & ~0xFF80) < ' ')], byte + mask[(byte >= 0x80)][((byte & ~0xFF80) < ' ')] ); return tmp; }
C.C. 読んでるかいないかだけでこれだけ変わるもんです。
さあみんなC.C.読もう(ぇ