文字コードとN進数の話が終わったので演習。 文字コードとN進数の理解のために、atoi() , itoa() のプログラムについて説明を行う。
ポインタの理解が怪しいので、次回の後半はポインタの説明としよう。
atoi() , iota()
int atoi( char s[] ) { int ans = 0 ; int i ; for( i = 0 ; s[ i ] != '¥0' ; i++ ) if ( '0' <= s[i] && s[i] <= '9' ) ans = ans*10 + (s[i] - '0') ; return ans ; } char* itoa( char ans[] , int x ) { // x は 16bit相当とする。 int i ; for( i = 4 ; i >= 0 ; i-- ) { int d = x % 10 ; ans[ i ] = '0' + d ; x /= 10 ; } ans[ 5 ] = '¥0' ; return ans ; } void main() { char str[ 10 ] ; printf( "%d¥n" , atoi( "123" ) ) ; printf( "%s¥n" , itoa( str , 1234 ) ) ; }
課題
前述の10進数文字列と数値の相互変換のatoi,itoaを参考に、 2進数、8進数、16進数などの変換プログラムを作成する。 プログラミングに自信がある場合は、文字列の先頭が"0"なら8進、"0x"なら16進と いった自動判別をしたり、小数点を含む"1.234"を実数に変換するプログラムなどに 取り組むこと。
レポートでは、(1)プログラムリスト、(2)プログラム説明、(3)動作確認、(4)考察 を記載すること。考察では感想ではなく、プログラムで扱える数値の範囲や、 制限を超えるような使い方をしたらどういった現象が発生するのかを検証するなど、 の記載を期待する。