【C言語】string.hを使って簡単に文字列操作【標準ライブラリ】

【C言語】string.hを使って簡単に文字列操作【標準ライブラリ】

string.hとは?

string.h は、C言語の標準ライブラリに含まれるヘッダーファイルで、文字列操作に関するさまざまな関数を提供します。C言語では、文字列は char の配列として扱われるため、これらの関数を利用することで、文字列のコピー、連結、比較、検索、分割などを効率的に行うことができます。

文字列のコピー

文字列をコピーするには strcpystrncpy を使用します。

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;
}

文字列の連結

文字列を連結するには strcatstrncat を使用します。

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;
}

文字列の比較

文字列を比較するには strcmpstrncmp を使用します。

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;
}

文字列の検索

特定の文字や部分文字列を検索するには strchrstrstr を使用します。

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;
}

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です