6 文字・文字列処理のライブラリー関数

6.1 文字処理関数


表 1: 文字処理関関数.#include <ctype.h>が必要.変数は,int c;
関数名 動作 戻り値
isalnum(c) 英数字なら真 真/偽(整数型)
isalpha(c) 英文字なら真 真/偽(整数型)
iscntrl(c) 制御文字なら真 真/偽(整数型)
isdigit(c) 数字なら真 真/偽(整数型)
isgraph(c) 印字可能文字なら真 真/偽(整数型)
islower(c) 小文字なら真 真/偽(整数型)
isprint(c) 空白以外の印字可能文字なら真 真/偽(整数型)
ispunct(c) 区切り文字なら真 真/偽(整数型)
isspace(c) 空白類文字なら真 真/偽(整数型)
isupper(c) 大文字なら真 真/偽(整数型)
isxdigit(c) 16進表示文字なら真 真/偽(整数型)
tolower(c) 文字cを小文字に変換 小文字(文字型)
toupper(c) 文字cを大文字に変換 大文字(文字型)

6.2 文字列処理関数

2を使うためには,#include <string.h>が必要で ある.変数は,char s1[256],s2[256];のように文字型の配列.そのサイズは,処理に必要なサイズよりも大きいこと(256とは限らない).後の学習範囲であるが,s1s2は文字型のポインターでも良い.ま た,ダブルクォーテーションで囲んだリテラル表現も可能な部分もある.cは文字型の変数,char c;である.

表 2: 文字列処理関関数.
関数名 動作 戻り値
strlen(s1) 文字列s1の長さ,すなわち文字数を整数値返す. 文字列長(整数型)
strcpy(s1,s2) s1に,文字列s2をコピーする. ポインターs1の値
strcat(s1,s2) 文字列s1の後に,文字列s2をコピーする. ポインターs1の値
strcmp(s1,s2) 文字列s1とs2を比較する. 整数値
s1 > s2 の場合,戻り値は正
s1 == s2 の場合,戻り値は0
s1 < s2 の場合,戻り値は負
strncpy(s1,s2,n) s1に文字列s2の先頭からn文字をコピーする. ポインターs1の値
strncat(s1,s2,n) 文字列s1の後にと文字列s2の先頭からn文字を連結する. ポインターs1の値
strncmp(s1,s2,n) 文字列s1と文字列s2の先頭からn文字を比較する.比較の 結果は,srcmpと同じ. 整数値
strchr(s1,c) 文字列s1の中の文字cの位置を返す.文字がないときは, NULLを返す. ポインター
strstr(s1,s2) 文字列s1の中にある文字列s1の位置を返す.もし,文字 列がない場合,NULを返す. ポインター

ここで,戻り値がちょっと難しいstrchr()関数の使用例をリスト示す.この プログラムの動作はポインターを学習しないと理解できないであろう.したがって,今は 分からなくてもよい.ただし,学年末には理解してほしい.

   1 #include <stdio.h>
   2 #include <string.h>
   3 
   4 int main(void)
   5 {
   6   char s='s';
   7   char alphabet[50]="abcdefghijklmnopqrstuvwxyz";
   8 
   9   printf("%cは%d番目です\n",s, strchr(alphabet,s)-alphabet+1);
  10 
  11   return 0;
  12 }


\fbox{実行結果}
sは19番目です

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


no counter