8.4 文字列処理関数

C 言語における文字列の扱い

C 言語では文字列は文字型変数の配列として処理されます。つまり文字列処理関数は文字型の配列変数の処理をやっているのです。配列変数のことを理解していないと難しいかもしれませんので、例を多く示しておきます。(文字列変数配列変数の項も参照)

strlen 文字列の長さを調べる

#include <string.h>
int strlen(char *s1)

文字列の長さを返します。戻り値は整数型です [1]

('\0' が何番目にあるかを数えているのですが、先頭を 0 番目と数えるので、一文字も含まれていない場合(最初の文字が '\0' だった場合)は長さを 0 と返し、直感と一致します。)

strcpy 文字列の複写

#include <string.h>
char *strcpy(char *s1, char *s2)

文字列 s1 に、文字列 s2 の内容をコピーします。s2 の末尾にある '\0' も含めてコピーされます。戻り値は s1 を指しています。

strncpy 上限付きの文字列の複写

#include <string.h>
char *strncpy(char *s1, char *s2, int n)

文字列 s1 に、最大 n 文字を上限として文字列 s2 の内容をコピーします。s2 の末尾を意味する '\0' が n 番目以降にあった場合、'\0' はコピーされないので末尾処理に注意が必要です。戻り値は s1 を指しています。

strcat 文字列の追加

#include <string.h>
char *strcat(char *s1, char *s2)

文字列 s1 に、文字列 s2 の内容を追加します。s1 の末尾にあった '\0' を取り除き、そこから s2 の内容を、s2 の末尾にある '\0' も含めてコピーします。戻り値は s1 、つまり追加された後の文字列を指しています。

strncat 上限付きの文字列の追加

#include <string.h>
char *strncat(char *s1, char *s2, int n)

文字列 s1 に、最大 n 文字を上限として文字列 s2 の内容を追加します。s1 の末尾にあった '\0' を取り除き、そこから s2 の内容をコピーしていきますが、s2 の末尾を意味する '\0' が n 番目以降にあった場合、'\0' はコピーされないので末尾処理に注意が必要です。戻り値は s1 、つまり追加された後の文字列を指しています。

strcmp 文字列の比較

#include <string.h>
int strcmp(char *s1, char *s2)

条件判定に用います。文字列 s1 と s2 が等しければ 0 を、そうでなければ 0 以外を返します。典型的には以下のようにして使います。

  if( strcmp( s1, s2 ) == 0 ) { 
    printf("一致しました\n");
  } else {
    printf("違います\n");
  }

strncmp 上限付き文字列の比較

#include <string.h>
int strncmp(char *s1, char *s2, int n)

条件判定に用います。文字列 s1 と s2 を、n 文字までの範囲で比較して等しければ 0 を、そうでなければ 0 以外を返します。



Yutaka Yasuda (yasuda@cc.kyoto-su.ac.jp)