int atoi( const char *s ) sをintに変換して返す
atoiに渡す文字列 atoiの戻り値
"500.5abc" --> 500 最初に見つかった連続する数字を整数値として返す
" 2468" --> 2468 先頭にある空白は飛ばす
"-1234" --> -1234 -符号で始まっていれば負の値として
"+1234" --> 1234 +符号なら、正の値として
"abc" --> 0 数字列が見つからなければ0が返る
#include <stdio.h> #include <ctype.h> int atoi( char s[] ) { int i, n, sign; for( i = 0; isspace( s[i] ); i++ ) //先頭の空白を読み飛ばす ; sign = ( s[i] == '-' ) ? -1 : 1; //符号を保存する if( s[i] == '-' || s[i] == '+' ) //符号を飛ばす i++; for( n = 0; isdigit( s[i] ); i++ ) //s[i]が数字のあいだ、nへ n = 10 * n + ( s[i] - '0' ); return sign * n; //符号を反映 } main() { printf( "%d\n", atoi( "500.5abc" ) ); printf( "%d\n", atoi( " 2468" ) ); printf( "%d\n", atoi( "-1234" ) ); printf( "%d\n", atoi( "+1234" ) ); printf( "%d\n", atoi( "abc" ) ); }
n = 10 * n + ( s[i] - '0' );
(今回のクイズです)
たとえば、int型 num の文字列表現を char str[12] に入れるには、sprintf を使ってどのように書けばよいでしょうか?
(答えは、次回のC言語の Tips で ・・・)
int seats[CARS][COLS][SEATS] //CARS はバスの台数としてdefine
関数の引数宣言も3次元配列とします。
int notReservedCnt( int seats[CARS][COLS][SEATS] ) または int notReservedCnt( int seats[][COLS][SEATS] )初期化例や関数のコードは、次のリンクから表示できます。 >> 3次元配列にしたプログラム例