ホーム » スタッフ » 斉藤徹 » atoi(),itoa()にて演習

2010年5月
« 4月   6月 »
 1
2345678
9101112131415
16171819202122
23242526272829
3031  

最近の投稿(電子情報)

アーカイブ

カテゴリー

atoi(),itoa()にて演習

N進数・文字列・数値の範囲・文字コードとデータの基本が理解出来たところで、 文字列から整数値を取り出すatoi() , 数値を文字列に変換する itoa() のプログラムにて、 演習を行う。 演習用の雛形プログラムを示し、そのプログラムの挙動を示し、以下の課題とする。

int my_atoi( char s[] ) {
int ans = 0 , i ;
for( i = 0 ; s[i] != '\0' && s[i] >= '0' && s[i] <= '9' ; i++ ) {
ans = ans * 10 + (s[i] - '0' ) ;
}
return ans ;
}
char* my_itoa( char ans[] , int x )
{  int i ;
ans[ 5 ] = '\0' ;
for( i = 0 ; i < 5 ; i++ ) {
int d = x % 10 ;
ans[ 4 - i ] = '0' + d ;
x /= 10 ;
}
return ans ;
}

課題

my_atoi() については、 (a) 8進数・2進数・16進数で動くように、 (b) より一般的にN進数で動くように、 (c) 小数点を含む値が処理できるように (d) C言語の定数のように先頭の"0x(16進数)","0(8進数)"で 自動的に基数を判別するように、といった改良のいずれかを行うこと。 また、my_itoa については、同様に、(e) 8,2,16進数、(f) N進数、(g) 浮動小数 といったテーマより、それぞれ1つづつを選んで取り組むこととした。

レポートには、プログラム・説明・動作検証(異常動作の検証)・異常動作についての考察 を記載することとする。

課題に取り組んでもらっている中で、関数のプロトタイプ宣言を説明を行う。