Ruby言語では文字列を、コピーしたり、くっつけたり(結合)、
一部分(部分文字列; substring)を取り出したりすることがいとも簡単にできた。
C言語は文字列を操作する場合には、つねに char型配列 で
あることを意識し、コピーするときも結合するときも必要な
char型配列を宣言して行なう必要がある。
実用的なプログラムを作る場合には欠かせない文字列操作関数に 絞っていくつか挙げておこう。以下のいずれを利用する場合にも
#include <string.h>
が必要となることに注意する。
strlcpy
      文字列をコピーする
strlcpy(コピー先, コピー元, 許容量)
とすると、コピー先の
      許容量 を超えない範囲で
      コピー元 が示す文字列を コピー先 の
      char型配列にコピーする。
      例:
char new[100], old[]="Hello, world!";
のような場合、old[] に入っている文字列を
      new[] にコピーしたい場合は、
strlcpy(new, old, sizeof new);
とする。
strcpy
      文字列をコピーする。
strcpy(コピー先, コピー元)
許容量の指定がないことの他はstrlcpyと同じ。
      strcpyは、文字列が壊れているとメモリを破壊するので実
      際のプログラミングではstrlcpyを使う。ただし、
      プログラミングの参考書や試験ではstrcpyを使う
      ことが多い。
strlcat
      文字列の結合を行なう
strlcat(文字列1, 文字列2, 許容量)
文字列2 を 文字列1 の末尾に追加する。
      二つの文字列をつなげたいときに利用する。
      例:
char new[100]="Hello", old[]=", world!";
のような場合に old[] の文字列を
      new[] に安全に追加するには以下のようにする。
strlcat(new, old, sizeof new);
strcat
      文字列の結合を行なう。許容量を指定しない点を除いて
      strlcat と同じ。プログラミングの参考書や試験では
      strcatを使う場合が多い。ただしchar
      型配列のサイズが不足していると、他の変数の文字列を破壊する可能性が
      ある。
例: test-strcat.c
#include <stdio.h>
#include <string.h>
int main()
{
  char a[] = "a[]を追加するのだ。";
  char b[] = "b[] だよ.";
  char c[] = "これは c[] です.";
  printf("aの内容=[%s]\n", a);
  printf("bの内容=[%s]\n", b);
  strcat(c, a);
  printf("aの内容=[%s]\n", a);
  printf("bの内容=[%s]\n", b);
}
      strcat を利用する場合には宣言するchar
      型配列のサイズに十分気をつける。もちろんstrlcatを
      利用する方が望ましい。
strncmp
      文字列の大小比較を行なう。
strncmp(文字列1, 文字列2, 最大文字数)
として 文字列1 と 文字列2 の大小を
      最大文字数 の範囲内で比較する。比較結果はint
      型の数値で返る。
返す。
strcmp
      文字列の大小比較を行なう。
strcmp(文字列1, 文字列2)
最大文字数の指定をしない他はstrncmpと同じ。
strncasecmp
      文字列の大小比較を行なう。
strncasecmp(文字列1, 文字列2, 最大文字数)
として 文字列1 と 文字列2 の大小を
      最大文字数 の範囲内で比較する。比較のときには
      アルファベットの大文字小文字を区別しない。比較結果はint
      型の数値で返る。
strcasecmp
      文字列の大小比較を大文字小文字の区別なしで行なう。
strcasecmp(文字列1, 文字列2)
最大文字数の指定をしない他はstrncasecmpと同じ。
strstr
      固定文字列によるパターンマッチ
strstr(BIG, LITTLE)
文字列 BIG の中に、文字列 LITTLE が 含まれるかどうか調べ、含まれる場合はBIG の中で 最初に LITTLE が見付かった先頭の位置をアドレスで返す。 見付からなかった場合は NULL を返す。
strcasestr
      strcasestr(BIG, LITTLE)
大文字小文字を無視してstrstrを行なう。
strchr
      strchr(文字列, 文字)
文字列 の中に 文字 があるか調べる。 見付かった場合は最初に見付かった位置をアドレスで返す。 見付からなかった場合は NULL を返す。
strrchr
      strrchr(文字列, 文字)
文字列 の中に 文字 があるか 右側から(文字列 の後ろから)調べる。 見付かった場合は最初に見付かった位置をアドレスで返す。 見付からなかった場合は NULL を返す。