- strchr
インクルードファイル string.h 書式 char *strchr(const char *str, int ch) 引数 str:検索対象となる文字列
ch:検索する文字処理 検索対象の文字列の先頭から文字を検索し, 最初に検索文字に一致する 戻り値 文字のポインタを返す
検索文字に最初に一致した文字へのポインタ(検索に失敗したときは NULL)<サンプルプログラム>
/*** アルファベットの順番を調べる ***/ #include <stdio.h> #include <string.h> int main(void){ int point; char str[ ] = "abcdefghijklnmopqrstuvwxyz", /* 検索対象の文字列 */ str1 = 'z', /* 検索する文字 */ *pt; pt = strchr(str, str1); point = pt - str; printf("%s 中に %c が出現するのは %d 番目から\n", str, str1, point+1); /* 最初にでてくる 'z' が前から何番目かを表示 */ }
- strcat
インクルードファイル string.h 書式 char *strcat(char *str1, const *str2) 引数 str1:繋げる元になる文字列のポインタ
str2:繋げる文字列のポインタ処理 str1で指定された文字列の後ろにstr2で指定した文字列を繋げる 戻り値 元になる文字列のポインタ(str1) <サンプルプログラム>
/*** 文字列の連結 ***/ #include <stdio.h> #include <string.h> int main(void){ char str1[20] = "abcdefg", /* 連結する先の文字列(連結後のサイズを */ /*確保しておくこと) */ str2[ ] = "hijklmn"; /* 連結する文字列 */ /*** 連結前の各文字列 ***/ puts(str1); puts(str2); strcat(str1, str2); /*** 連結後の各文字列 ***/ puts(str1); puts(str2); }
- strcmp
インクルードファイル string.h 書式 int strcmp(const char *str1, const char *str2) 引数 比較する2つの文字列の先頭アドレス 処理 指定されたアドレスから順にデータを比較
共に終端記号になるか、異なる値になれば終了戻り値 0:文字列が等しい
負の値:1番目の引数で指定した文字列が2番目の引数で指定した文字列よりも小さい
正の値:1番目の引数で指定した文字列が2番目の引数で指定した文字列よりも大きい<サンプルプログラム>
/*** 文字列の比較 ***/ #include <stdio.h> #include <string.h> /*** プロトタイプ宣言 ***/ void cmp(char *str, char *str1); int main(void){ /*** 比較する文字列 ***/ char str[ ] = "abcdefg", str1[ ] = "abcdeff", str2[ ] = "abcdefg", str3[ ] = "abcdefh"; /*** str と str1 の比較 ***/ cmp(str, str1); /*** str と str2 の比較 ***/ cmp(str, str2); /*** str と str3 の比較 ***/ cmp(str, str3); } void cmp(char *str, char *str1){ if (strcmp(str, str1) == 0){ /* 文字列が等しいとき */ printf("%s と %s は等しい\n", str, str1); } else { if (strcmp(str, str1) < 0){ /* 文字列が小さいとき */ printf("%s < %s\n", str, str1); } else { /* 文字列が大きいとき */ printf("%s < %s\n", str1, str); } } }
- strcpy
インクルードファイル string.h 書式 char *strcpy(char *to, const char *sorce) 引数 to:コピー先文字列の先頭のポインタ
source:コピー元文字列の先頭のポインタ処理 ポインタsourceを先頭とする文字列をポインタto以降にコピー 戻り値 コピー先文字列へのポインタ(to) <サンプルプログラム>
/*** 文字列のコピー ***/ #include <stdio.h> #include <string.h> int main(void){ char str1[20] = "", /* コピー先の配列(連結後のサイズを確保 */ /* しておくこと) */ str2[ ] = "abcdefghijklmn"; /* コピー元の文字列 */ /*** コピー前の各文字列 ***/ printf("コピー前の文字列\n"); printf("str1: %s\n", str1); printf("str2: %s\n", str2); strcpy(str1, str2); /*** コピー後の各文字列 ***/ printf("コピー後の文字列\n"); printf("str1: %s\n", str1); printf("str2: %s\n", str2); }
- strlen
インクルードファイル string.h 書式 size_t strlen(const char *str) 引数 str:文字列へのポインタ 処理 strを先頭とする文字列の長さをカウントする 戻り値 ポインタの先頭から終端文字までの文字数 <サンプルプログラム>
/*** 文字列の長さ ***/ #include <stdio.h> #include <string.h> int main(void){ int num; char str1[ ] = "C", str2[ ] = "Perl", str3[ ] = "Fortran", str4[ ] = "Pascal"; /*** 文字列の長さ計算 ***/ num = strlen(str1); printf("%s の文字数は %d\n", str1, num); num = strlen(str2); printf("%s の文字数は %d\n", str2, num); num = strlen(str3); printf("%s の文字数は %d\n", str3, num); num = strlen(str4); printf("%s の文字数は %d\n", str4, num); }
- strncat
インクルードファイル string.h 書式 char *strncat(char *str1, const *str2, size_t num) 引数 str1:繋げる元になる文字列のポインタ
str2:繋げる文字列のポインタ
num:繋げる文字数処理 str1で指定された文字列の後ろにstr2で指定したポインタからnum個の文字を繋げる 戻り値 元になる文字列のポインタ(str1) <サンプルプログラム>
/*** n 文字列の連結 ***/ #include <stdio.h> #include <string.h> int main(void){ int num = 4; char str1[20] = "abcdefg", /* 連結する先の文字列(連結後のサイズを */ /* 確保しておくこと) */ str2[ ] = "hijklmn"; /* 連結する文字列 */ /*** 連結前の各文字列 ***/ puts(str1); puts(str2); strncat(str1, str2, num); /* n 文字連結 */ /*** 連結後の各文字列 ***/ puts(str1); puts(str2); }
- strncmp
インクルードファイル string.h 書式 int strcmp(const char *str1, const char *str2, size_t num) 引数 str1、str2:比較する 2 つの文字列の先頭アドレス
num:比較する文字数処理 指定されたアドレスからnumバイト分の文字を比較 戻り値 0:文字列が等しい
負の値:1番目の引数で指定した文字列が2番目の引数で指定した文字列よりも小さい
正の値:1番目の引数で指定した文字列が2番目の引数で指定した文字列よりも大きい<サンプルプログラム>
/*** / n 文字の比較 /***/ #include <stdio.h> #include <string.h> int main(void){ int num = 7; /*** 比較する文字列 ***/ char str1[ ] = "abcdefg", str2[ ] = "abcdefh"; /*** num 文字の比較 ***/ printf("%s と %s を先頭から %d 文字比較\n", str1, str2, num); if (strncmp(str1, str2, num) == 0){ /* 文字列が等しいとき */ printf("%s と %s は等しい\n", str1, str2); } else { if (strncmp(str1, str2, num) < 0){ /* 文字列が小さいとき */ printf("%s < %s\n", str1, str2); } else { /* 文字列が大きいとき */ printf("%s < %s\n", str2, str1); } } /*** num-1 文字の比較 ***/ printf("%s と %s を先頭から %d 文字比較\n", str1, str2, num-1); if (strncmp(str1, str2, num-1) == 0){ /* 文字列が等しいとき */ printf("%s と %s は等しい\n", str1, str2); } else { if (strncmp(str1, str2, num-1) < 0){ /* 文字列が小さいとき */ printf("%s < %s\n", str1, str2); } else { /* 文字列が大きいとき */ printf("%s < %s\n", str2, str1); } } }
- strncpy
インクルードファイル string.h 書式 char *strncpy(char *to, const char *sorce, size_t num) 引数 to:コピー先文字列の先頭のポインタ
source:コピー元文字列の先頭のポインタ
num:コピーする文字数(バイト)処理 ポインタsourceを先頭としてnum文字をポインタto以降にコピー 戻り値 コピー先文字列へのポインタ(to) <サンプルプログラム>
/*** n 文字のコピー ***/ #include <stdio.h> #include <string.h> int main(void){ int num = 9; char str1[20] = "", /* コピー先の配列(連結後のサイズを */ /* 確保しておくこと) */ str2[ ] = "abcdefghijklmn"; /* コピー元の文字列 */ /*** コピー前の各文字列 ***/ printf("コピー前の文字列\n"); printf("str1: %s\n", str1); printf("str2: %s\n", str2); strncpy(str1, str2, num); /* num 文字コピー */ /*** コピー後の各文字列 ***/ printf("コピー後の文字列\n"); printf("str1: %s\n", str1); printf("str2: %s\n", str2); }
- strrchr
インクルードファイル string.h 書式 char strrchr(const char *str, int ch) 引数 str:検索対象となる文字列
ch:検索する文字処理 検索対象の文字列の終りから文字を検索し, 最初に検索文字に一致する文字のポインタを返す 戻り値 検索文字に最初に一致した文字へのポインタ(検索に失敗したときは NULL) <サンプルプログラム>
/*** あるアルファベットの最期に出現する位置を調べる ***/ #include <stdio.h> #include <string.h> int main(void){ int point; char str[ ] = "abcdefghiabcdefghi", /* 検索対象の文字列 */ ch = 'a', /* 検索する文字 */ *pt; pt = strrchr(str, ch); point = pt - str; printf("%d 番目\n", point+1); /* 最期にでてくる a が前から */ /* 何番目かを表示 */ }
- strstr
インクルードファイル string.h 書式 char *strstr(const char *str1, const char *str2) 引数 str1:検索対象となる文字列のポインタ
str2:検索する文字列へのポインタ処理 検索対象の文字列から検索する文字列と一致する部分文字列を検索する 戻り値 一致した部分文字列の先頭のポインタ(検索に失敗したときはNULL) <サンプルプログラム>
/*** ある文字列が出現する位置を調べる ***/ #include <stdio.h> #include <string.h> int main(void){ int point; char str[ ] = "abcdefghiabcdefghi", /* 検索対象の文字列 */ str1[ ] = "i", /* 検索する文字列 */ *pt; pt = strstr(str, str1); point = pt - str; printf("%s 中に %c が出現するのは %d 番目から\n", str, str1, point+1); /* 最初にでてくる 'i' が前から何番目かを表示 */ }
2003年5月3日 13:00 更新