【C言語】string.hを使って簡単に文字列操作【標準ライブラリ】
string.hとは?
string.h
は、C言語の標準ライブラリに含まれるヘッダーファイルで、文字列操作に関するさまざまな関数を提供します。C言語では、文字列は char
の配列として扱われるため、これらの関数を利用することで、文字列のコピー、連結、比較、検索、分割などを効率的に行うことができます。
文字列のコピー
文字列をコピーするには strcpy
や strncpy
を使用します。
strcpy の使用例
#include <stdio.h>
#include <string.h>
int main() {
char src[] = "Hello, World!";
char dest[20];
strcpy(dest, src);
printf("コピー後: %s\n", dest);
return 0;
}
strncpy の使用例
strncpy
は最大コピーする文字数を指定できます。
#include <stdio.h>
#include <string.h>
int main() {
char src[] = "Hello, World!";
char dest[6];
strncpy(dest, src, 5);
dest[5] = '\0'; // 終端文字を手動で追加
printf("コピー後: %s\n", dest);
return 0;
}
文字列の連結
文字列を連結するには strcat
や strncat
を使用します。
strcat の使用例
#include <stdio.h>
#include <string.h>
int main() {
char str1[20] = "Hello, ";
char str2[] = "World!";
strcat(str1, str2);
printf("連結後: %s\n", str1);
return 0;
}
strncat の使用例
#include <stdio.h>
#include <string.h>
int main() {
char str1[20] = "Hello, ";
char str2[] = "World!";
strncat(str1, str2, 3); // "Wor" まで連結
printf("部分連結後: %s\n", str1);
return 0;
}
文字列の長さの取得
文字列の長さを取得するには strlen
を使用します。
strlen の使用例
#include <stdio.h>
#include <string.h>
int main() {
char str[] = "Hello, World!";
printf("文字列の長さ: %zu\n", strlen(str));
return 0;
}
文字列の比較
文字列を比較するには strcmp
や strncmp
を使用します。
strcmp の使用例
#include <stdio.h>
#include <string.h>
int main() {
char str1[] = "apple";
char str2[] = "banana";
if (strcmp(str1, str2) == 0) {
printf("文字列は同じです。\n");
} else {
printf("文字列は異なります。\n");
}
return 0;
}
strncmp の使用例
#include <stdio.h>
#include <string.h>
int main() {
char str1[] = "apple";
char str2[] = "apricot";
if (strncmp(str1, str2, 3) == 0) {
printf("先頭3文字は同じです。\n");
} else {
printf("先頭3文字は異なります。\n");
}
return 0;
}
文字列の検索
特定の文字や部分文字列を検索するには strchr
や strstr
を使用します。
strchr の使用例
#include <stdio.h>
#include <string.h>
int main() {
char str[] = "Hello, World!";
char *ptr = strchr(str, 'W');
if (ptr) {
printf("見つかった文字: %c\n", *ptr);
} else {
printf("文字が見つかりませんでした。\n");
}
return 0;
}
strstr の使用例
#include <stdio.h>
#include <string.h>
int main() {
char str[] = "Hello, World!";
char *ptr = strstr(str, "World");
if (ptr) {
printf("見つかった部分文字列: %s\n", ptr);
} else {
printf("部分文字列が見つかりませんでした。\n");
}
return 0;
}
文字列の分割
strtok
を使うと文字列をトークンに分割できます。
strtok の使用例
#include <stdio.h>
#include <string.h>
int main() {
char str[] = "apple,banana,grape";
char *token = strtok(str, ",");
while (token) {
printf("トークン: %s\n", token);
token = strtok(NULL, ",");
}
return 0;
}
メモリ操作関数
メモリ操作には memcpy
, memmove
, memset
などがあります。
memcpy の使用例
#include <stdio.h>
#include <string.h>
int main() {
char src[] = "Hello, World!";
char dest[20];
memcpy(dest, src, strlen(src) + 1);
printf("コピー後: %s\n", dest);
return 0;
}