6 文字・文字列処理のライブラリー関数
表 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を返す. |
ポインター |
ここで,戻り値がちょっと難しい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 }
sは19番目です
ホームページ:
Yamamoto's laboratory著者:
山本昌志
Yamamoto Masashi
平成19年1月26日