- コンピューターで文字を扱うときは,それはすべて,整数に置き換えて取り扱う.
文字と整数との対応を決めたものをコード表と言う.
- 1文字を表すためには,英数字では1バイト,日本語では2バイト必要である.
- 文字を扱うときには文字型の変数を使う.変数宣言の型は,「char」であ
る.これで,宣言された変数は1バイトの情報を記憶できる.すなわち,英数字
の1文字分である.
- 複数の文字が連なったものを文字列と言う.文字列を扱うためには,文字型の配列を使う.
- 文字型の配列に文字列を記憶させた場合,文字列のすぐあとに「\
0」が格納される.「\0」が無いと,文字列の終わりが分からな
い.
つぎに,文字型の変数宣言とそれへの値の代入である.
- 英数字が1文字の場合
- 英数字の文字列の場合
- 変数宣言
char hoge[10]; /* 文字型の配列 */
- 文字型の配列に文字を格納する方法はいくつかある.代表的な方
法は,「strcpy」と「sprintf」を使う方法である.ただ
し,前者を使う場合,「string.h」をインクルードする必要があ
る.
strcpy(hoge, "Akita"); /* 文字列の格納 */
sprintf(hoge, "Akita");
- 表示.変換指定子に%sを使う.
printf("%s", hoge); /* 表示 */
- 日本語の場合は,文字型の配列を使わなくてはならない.必要な配列
のサイズは,文字数である.なぜならば,日本語の1文字は2
バイトで,最後に「\0」を付加するためである.
- 変数宣言
char hoge[10]; /* 文字型の配列 */
- 文字型の配列に日本語の格納は,英数字と同じで,ダブルクォーテーションで囲む.
strcpy(hoge, "秋田"); /* 文字列の格納 */
sprintf(hoge, "秋田");
- 表示.変換指定子に%cを使う.
printf("%s", hoge); /* 表示 */
文字や文字列を扱うために,表
1や表
2に示すライブラリー関数が容易されている.学年末試験の
時には,この表は参考資料として添付するのでこれを憶える必要はない.
この表の関数を使うためには,
<ctype.h>や
<string.h>をインクルード
する必要がある--ということは憶えよ.
表 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を大文字に変換 |
大文字(文字型) |
表
2を使うためには,
#include <string.h>が必要で
ある.変数は,
char s1[256],s2[256];のように文字型の配列.そのサイズは,処理
に必要なサイズよりも大きいこと(256とは限らない).後の学習範囲であるが,
s1や
s2は文字型のポインターでも良い.ま た,ダブルクォーテーションで囲んだリテラ
ル表現も可能な部分もある.
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を返す. |
ポインター |
ホームページ:
Yamamoto's laboratory著者:
山本昌志
Yamamoto Masashi
平成19年3月4日