配列を関数に渡す ・基本は文字列を関数に渡す場合と一緒 −ポインタで受け取る −配列として受け取る ・関数側では配列の長さはわからない [解決策1]配列の長さを引数で渡す [解決策2]配列の終端を示すマークを格納しておく 配列を受け取る関数 [宣言] 引数をポインタ型もしくは配列にする void PrintArray(int *piArray); void PrintArray(int piArray[]); [使用] 配列の先頭アドレスへポインタを渡す PrintArray(piArray); [備考[ 配列の終端を関数に知らせること main関数の真の姿 void main(void){ 今まで ・・・ } int main(int argc, char **argv){ 本来は ・・・ } main関数 ・コマンドライン引数を受け取れる −コマンドライン(コマンドプロンプト)で入力した内容のこと ・main関数に渡すことができるもの −引数の総画数 −コマンドライン引数(文字列の配列) main関数の引数とは ・main関数の引数の説明 int main(int argc,char **argv); argc コマンドライン引数の数(最低は1) argv コマンドライン引数(文字列の配列) ・引数の別記述法 −int main(int argc, char *argv[]); と記述することも可能 main関数の引数とは ・引数名 −argcとargvを用いるのが慣例 ・それぞれの引数の意味 −agrc 引数の数(プログラム名そのものも含む) main関数の引数とは ・それぞれの引数の意味 -argv argv[0] 0番目(最初)の引数文字列 (プログラム名) argv[1] 1番目の引数文字列(の先頭アドレス) argv[2] 2番目の引数文字列(の先頭アドレス) : : と言う形でデータが渡される main関数の戻り値とは ・通常の関数の戻り値と意味的には同じ −return文で値を返す −通常はreturn 0;でかまわない ・戻り値はそのプログラムを実行したプロセス(プログラムの使用側)に返される ・戻り値が必要なければ戻り値の型をvoidで宣言しておけばよい 引数個数のチェック ・引数を用いるmain関数では引数の個数をチェックする argv[0]にはプログラム名 | argv[1]="100" | | argv[2]="200" | | | > cins0811 100 200 ~~~~~~~~~~~~~~~~ argc = 3 引数個数のチェック ・argcの値を用いてチェックする −制御文(条件分岐)を記述する ・exitで中止する −異常終了の時は1以上の値を返すのが慣例 ・exit(1); 異常終了の記述法 ・exit(0); 異常ではないけどプログラムを途中終了される記方法 引数個数のチェック ・記号定数を用いる −exit(EXIT_FAILURE); exit(1)に等しい −exit(EXIT_SUCCESS); exit(0)に等しい ※使用するにはstdlib.hをインクルードする必要がある 関数作成時の留意事項 ・関数は基本的に独立される ・何回も行う処理は関数にする −同じ処理を何度も書かない ・機能的に分割できれば関数にする C言語研修(基礎編) 〜文字と文字列の処理〜 文字処理関数とは ・文字に対する処理を行う関数である −文字の種類を調べる文字判定関数(is〜) −文字を変換する文字変換関数(to〜) ・基本的に1バイト文字を対象にしている −2バイト文字を対象にした関数もある ・ctype.hをインクルードする必要がある 文字判定関数とは 説明 関数名がisで始まる関数群のこと 機能 文字の種類を調べることができる 動作 テスト条件を満たす場合 → 0 以外 の値を返す テスト条件を満たさない場合 → 0 を返す 代表的な文字判定関数 関数 テスト条件 isalnum() 英数字(英語と数字) isalpha() 英字('A'〜'Z', 'a'〜'z') isdigit() 数字('0'〜'9') islower() 英小文字('a'〜'z') isupper() 英大文字('A'〜'Z') 文字変換関数とは 説明 関数名が to で始まる関数群のこと 機能 文字を変換することができる 動作 変換できる場合 →変換後に文字を返す 変換できない場合 →そのままの文字を返す 代表的な文字変換関数 関数 tolower() 英大文字を英小文字に変換する それ以外の文字は変換しない toupper() 英小文字を英大文字に変換する それ以外の文字は変換しない 文字変換関数のイメージ ●tolower()の場合 _______ [A]→[tolower]→[a] ~~~~~~~ _______ [1]→[tolower]→[1] ~~~~~~~