スポンサーリンク

標準関数を使って文字列処理

C言語

<stdio.h>に含まれる標準関数

関数を色々勉強してきましたが、今までは使っていた【 printf 】【 scanf 】【 gets 】【 puts 】・・まだ他に沢山ありますが、、これらは標準ライブラリー関数と呼ばれ『<stdio.h>』を記述して、これらの標準関数を使えるようにしているヘッダファイルと呼ばれるものです。Cコンパイラには種類にもよりますがMaicroSoftCに付属する他の標準関数について勉強してみたいと思います。

何時も使っている【 <stdio.h> 】ヘッダファイルのサンプル

#include <stdio.h>

main()

{

printf(“HELLO\n”);

}

C言語の関数は二種類存在します

・自分で作る関数

・初めから用意されている標準関数。(※stdio.h)の中に用意されているもの

しばらくの間、初めから用意されている関数について勉強してみたいと思います。

文字列の処理関数

【 #include<string.h> 】宣言が必要(※後ほどサンプルにて説明)

文字処理標準関数一覧

関数 説明
memchr 指定した文字列から指定した文字を検索する
nencmp 範囲を指定できる文字列を比較
memicmp 大文字と小文字を区別しない
memmove コピー領域が重なっていても正しくコピーする
memcpy 指定した数の文字をあるバッファからあるバッファにコピーする
memset 指定した文字列の指定バイト数を指定した文字で初期化
strcat 文字列の連結
strchr 文字列を先頭からサーチし指定文字を探す
strcmp 文字列の比較
strcpy 文字列の複写
strcspn 指定した複写の文字を検索
strerror エラー番号に対応したメッセージを返す
strlen 文字列の長さを得る
strncat 文字数を指定できる文字列連結
strncmp 文字列を指定できる文字列比較
strncpy 文字列を指定できる文字列複写
strpbrk 指定文字列に含まれるどれかの文字が現れる位置を探す
strrchr 文字列を後ろからサーチし指定文字を探す
strsnp 「指定した複写の文字」以外の文字を検索
strstr 文字列の中から指定文字列を検索
strtok 文字列からトークン(字句)を切り出す

文字列処理のサンプル

文字列の代入→【 strcpy 】(※関数名)

文字列の長さを取得→【 strlen 】

文字列の比較→【 strcmp 】

文字列の連結→【 strcat 】

※文字列処理を行う標準関数を利用するには 【 include 】宣言をする必要があります。

サンプル

#include <stdio.h>

#include <string.h>

main()

{

char s1[80],s2[80];

int ln;strcpy(s1,”abcdef”);

strcpy(s2,”uvwxyz”);printf(“s1=%s s2=%s\n”,s1,s2);ln=strlen(s1);

printf(“len=%d\n”,ln);if(strcmp(s1,s2) > 0){

printf(“左辺が大\n”);

}

if(strcmp(s1,s2) < 0){

printf(“右辺が大\n”);

}

if(strcmp(s1,s2) == 0){

printf(“等しい\n”);

}

if(strcmp(s1,s2) != 0){

printf(“等しくない\n”);

}

strcat(s1,s2);

printf(“s1+s2=%s\n”,s1);

}

上記サンプルの簡易解説

上記サンプルの出力結果

それぞれの関数別説明

【 strcpy 】関数 strcpy(a,”ABCDE”); 文字列変数aはABCDEが代入されます。

また strcpy(a,b); とすると文字列変数aにはb変数の文字列が代入されます。

【 strlen 】関数 a=strlen(“ABCDE”); 文字列の長さを求め aには5が代入されます。

また a=strlen(b); とすると文字列変数bに代入された文字の長さを求めaに代入されます。

【 strcmp 】関数 文字列の比較を行うのですが、文字の長さを比較するのでは無く文字コード順で比較されます。

※文字コードに付いては↓を参照してください。 番号の若い順で並んでいます。

文字コード補足説明

コンピューターは文字を、文字コード(キャラクターコード)と呼ぶ連続番号で管理しています。基本となるのはASCII(詳細はこちらを参照)文字コード表は0~127までの番号で構成されています。

【 strcmp 】関数比較条件の説明

【 if(strcmp(a,b)) == 0 】 m、文字列aと文字列bが等しいなら

【 if(strcmp(a,b)) != 0 】 文字列aと文字列bが等しく無いなら

【 if(strcmp(a,b)) > 0 】 文字列aが文字列bより大きい場合

【 if(strcmp(a,b)) >= 0 】 文字列aが文字列bより大きいか等しい場合

【 if(strcmp(a,b)) < 0 】 文字列aが文字列bより小さい場合

【 if(strcmp(a,b)) <= 0】 文字列aが文字列bより小さいか等しい場合

あてはまる場合条件をそれぞれ実行することになります。

【 strcat 】関数 変数aが”HELLO”とした場合

【 strcat(a,”ABC”); 】とするとaは”HELLOABC”になります。

以上簡単ですが文字列関数についての説明は終わりです。

標準関数についてはもう少勉強してみたいとおもいます。

コメント

タイトルとURLをコピーしました