2 文字処理

2.1 コンピューター内部での文字の表現

2.1.1 基本事項

まずは、基本的なことである。

2.1.2 文字型変数と代入

つぎに、文字型の変数宣言とそれへの値の代入である。

2.2 入出力

文字を取り扱う場合の入出力関数を表1に示す。これらの関数を 使う場合、以下の注意が必要である。

表 1: 入出力に用いられる関数
標準 ファイル
1文字 1行 書式付き 1文字 1行 書式付き
入力 getchar gets scanf fgetc fgets fscanf
出力 putchar puts printf fputc fputs fprintf

2.3 標準ライブラリー関数

文字処理のための表2、文字列処理のための表 3の標準ライブラリー関数について学習した。

表 2: 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を大文字に変換


表 3: 文字列処理関関数。#include <string.h>が必要。変数は、char s1[256],s2[256];のように文字型の配列。配列のサイズは、処理に必要なサイズより も大きいこと(256とは限らない)。cは文字型の変数、char c;である。
関数名 動作
strlen(s1) 文字列s1の長さ、すなわち文字数を整数値返す。
strcpy(s1,s2) s1に、文字列s2をコピーする。
strcat(s1,s2) 文字列s1の後に、文字列s2をコピーする。
strcmp(s1,s2) 文字列s1とs2を比較する。
s1 > s2 の場合、戻り値は正
s1 == s2 の場合、戻り値は0
s1 < s2 の場合、戻り値は負
strncpy(s1,s2,n) s1に文字列s2の先頭からn文字をコピーする。
strncat(s1,s2,n) 文字列s1の後にと文字列s2の先頭からn文字を連結する。
strncmp(s1,s2,n) 文字列s1と文字列s2の先頭からn文字を比較する。比較の 結果は、srcmpと同じ。
strchr(s1,c) 文字列s1の中の文字cの位置を整数で返す。文字がないときは、 NULLを返す。
strstr(s1,s2) 文字列S1の中にある文字列S1の位置を整数で返す。もし、文字 列がない場合、NULLを返す。

この表を憶える必要は全くない。学年末試験の時には、この表は参考資料として添付する。 ただ、この表の関数を使うためには、<ctype.h><string.h>をインクルード する必要があることは理解して欲しい。
ホームページ: Yamamoto's laboratory
著者: 山本昌志
Yamamoto Masashi
平成17年2月20日


no counter