3 文字・文字列処理関数

文字や文字列の処理のプログラムを容易にするために,標準ライブラリー関数 4が用意されている.これを使えば,いちいちユーザ定義関数を作成するまで もなく,文字・文字列処理ができる.教科書のユーザー定義関数と同じ 働きの標準ライブラリー関数もある 5.文字.文字列処理のライブラリー関数を付録付録Aに載せる.

諸君は,これらのライブラリー関数を全て憶える必要はない.ライブラ リー関数の大体の機能とその使い方が書かれている場所さえ知っていれば良い.プ ログラムを作成するときには,必要なライブラリー関数はC言語の本,あるいはWEBから探 すことになる.私のテストでも,これらのライブラリー関数は与えるので憶える必要は ない.

それでは,文字処理と文字列処理のライブラリー関数の使い方を学ぶことにしよう.

3.1 文字処理関数の例

付録付録Aの表1に示す文字処理のライブラリー 関数の使い方を示す.この表の関数は,ひとつの文字を処理する関数である.文字列では ない.ひとつの文字というのは1バイトのことで,2バイトで表す日本語--ひらがなやカ タカナ,漢字--の場合,この文字処理関数を使うことはできない.

この文字処理関数のうち,文字が英数字6か否かを調べる関数isalnum()の使用例をリスト2 示す.キーボードからひとつの文字を読み込んで,それが英数字か否かを調べ,その結果 を表示している.

1に示すとおり,便利な文字列処理関数はたくさんある. それを使うためには,ctype.hというヘッダーファイル7をインクルードしなくてはな らない.ただし,コンパイル(gcc)時には,特別なオプションは必要ない.

   1 #include <stdio.h>
   2 #include <ctype.h>
   3 
   4 int main(void)
   5 {
   6   char hoge;
   7 
   8   scanf("%c", &hoge);
   9 
  10   if(isalnum(hoge)){
  11     printf("入力された文字は英数字です.\n");
  12   }else{
  13     printf("入力された文字は英数字ではありません.\n");
  14   }
  15 
  16   return 0;
  17 }

3.2 文字列処理関数の例

付録付録Aの表2に示す文字列処理のライブラリー 関数の使い方を示す.この表の関数は,文字列を処理する関数である.

この文字列処理関数のうち,文字列をコピーする関数strcpy()の使用例をリスト 3に示す.このプログラムを実行してみると,文字列を配列にコピーし ていることが分かるだろう.

この例からも分かるように,戻り値は使わなくてもよい.文字列処理関数の場合戻り値が ポインターの場合が多いので,まだ,諸君には難しいであろう.次回の講義からポインター の話をするので楽しみにしてください.

2に示すとおり,たくさんの便利な文字列処理関数がある. それを使うためには,string.hというヘッダーファイルをインクルードしなくてはな らない.ただし,コンパイル(gcc)時には,特別なオプションは不要である.

   1 #include <stdio.h>
   2 #include <string.h>
   3 
   4 int main(void){
   5   char foo[30]="もうかりまっか?";
   6   char hoge[30], fuga[30];
   7 
   8   strcpy(hoge, foo);
   9   strcpy(fuga, "ごっつい,もうかるでー");
  10   printf("%s\n", hoge);
  11   printf("%s\n", fuga);
  12 
  13   return 0;
  14 }

3.3 文字列処理関数の例




ホームページ: Yamamoto's laboratory
著者: 山本昌志
Yamamoto Masashi
平成19年1月26日


no counter