<文字列処理関数>
標準ライブラリには様々な文字列処理用の関数が用意されていいます。以下に比較的よく使う関数を紹介します。プロトタイプはstring.hに宣言されています。
strlen関数
形式: size_t strlen(const char *s);
機能: 文字列*sの長さを取得し、返却する。長さに'\0'は含まない。
返却値: 文字列*sの長さ。
strcpy関数
形式: char *strcpy(char *s1, const char *s2);
機能: 文字型配列*s1に文字列*s2をコピーする。'\0'もコピーするのでs1はその分も考えて大きさを宣言しておかなければならない。
返却値: s1の値。つまり返却値はコピー後の文字列を指す。
strcat関数
形式: char *strcat(char *s1, const char *s2);
機能: 文字型配列*s1の後ろに文字列*s2を連結する。'\0'も連結するのでs1はその分も考えて大きさを宣言しておかなければならない。
返却値: s1の値。
strcmp関数
形式: int strcmp(const char *s1, const char *s2);
機能: 文字列*s1と文字列*s2を比較する。
返却値: s1>s2で正の値、s1<s2で負の値、s1=s2で0を返す。この大小関係は辞書順による。
memcpy関数
形式: void *memcpy(void *buf1, const void *buf2, size_t n);
機能: *buf1の先頭からn文字(nバイト)分*buf2をコピーする。
返却値: buf1
memcpy関数の対象になるのは、引数の型がvoid *であることからも分かるように、文字列に限りません。大きな配列データをまとめて高速にコピーするときによく使います。
(例)
#define
SIZE 100
double
src[SIZE][SIZE][SIZE], dst[SIZE][SIZE][SIZE];
int
i, j, k;
/*
配列srcの各要素を1つずつdstにコピー */
for
(i=0; i<SIZE; i++)
for
(j=0; j<SIZE; j++)
for
(k=0; k<SIZE; k++)
dst[i][j][k]
= src[i][j][k];
/*
forの条件判断が多いので遅い */
/*
srcの中身をまとめてdstにコピー */
memcpy(dst,
src, SIZE*SIZE*SIZE*sizeof(double));
/*
速い */