C言語

【C言語】第3章第4回:文字列の基本と扱い方

C言語では、文字列は文字の配列として扱われます。この章では、文字列の宣言、初期化、操作方法を解説します。

1. 文字列とは?

文字列は、文字を連続して格納したデータ構造です。C言語では、文字列は文字型配列(char型配列)を使用して表現します。

例:文字列の宣言と初期化

#include <stdio.h>

int main() {
    char greeting[] = "Hello, World!";
    printf("%s\n", greeting); // 文字列を出力

    return 0;
}

解説:

  • char greeting[]"Hello, World!"で初期化された文字列。
  • %sprintfで文字列を出力する際のフォーマット指定子。

2. 文字列の終端とヌル文字

C言語の文字列は、最後にヌル文字('\\0')が追加されます。このヌル文字は、文字列の終端を示します。

例:ヌル文字を含む文字列

#include <stdio.h>

int main() {
    char word[6] = {'H', 'e', 'l', 'l', 'o', '\\0'}; // ヌル文字を明示的に追加

    printf("%s\n", word);

    return 0;
}

解説:

  • 配列の最後に'\\0'を加えることで、正しい文字列として認識されます。
  • ヌル文字がない場合、printfで出力すると予期しない結果を引き起こす可能性があります。

3. 文字列の操作

C言語の標準ライブラリには、文字列を操作するための関数が用意されています。

3.1 文字列のコピー

strcpy関数を使って、文字列をコピーできます。

#include <stdio.h>
#include <string.h>

int main() {
    char source[] = "C programming";
    char destination[20];

    strcpy(destination, source); // 文字列をコピー

    printf("Copied string: %s\n", destination);

    return 0;
}

解説:

  • strcpysourceの内容をdestinationにコピー。
  • コピー先の配列サイズが十分であることを確認する必要があります。

3.2 文字列の連結

strcat関数を使って、文字列を連結します。

#include <stdio.h>
#include <string.h>

int main() {
    char greeting[20] = "Hello, ";
    char name[] = "Alice";

    strcat(greeting, name); // 文字列を連結

    printf("%s\n", greeting);

    return 0;
}

解説:

  • strcatgreetingnameを連結。
  • 連結先の配列サイズが十分であることを確認します。

4. 文字列の長さを測定する

strlen関数を使って、文字列の長さを取得します。

例:文字列の長さを測定

#include <stdio.h>
#include <string.h>

int main() {
    char word[] = "C programming";

    printf("Length of string: %lu\n", strlen(word)); // 文字列の長さを出力

    return 0;
}

解説:

  • strlen:ヌル文字'\\0'を除いた文字数を返します。
  • 配列のサイズではなく、文字列の実際の長さを取得します。

5. 練習問題

以下の課題に挑戦して、文字列操作を練習しましょう。

  1. 文字列を宣言し、それを出力するプログラムを作成してください。
  2. strcpy関数を使って、2つの文字列をコピーするプログラムを作成してください。
  3. strlen関数を使って、ユーザーが入力した文字列の長さを測定するプログラムを作成してください。

6. 練習問題の解答と解説

問1の解答

#include <stdio.h>

int main() {
    char greeting[] = "Hello, World!";
    printf("%s\n", greeting);

    return 0;
}

問2の解答

#include <stdio.h>
#include <string.h>

int main() {
    char source[] = "Programming is fun!";
    char destination[30];

    strcpy(destination, source);
    printf("Copied string: %s\n", destination);

    return 0;
}

問3の解答

#include <stdio.h>
#include <string.h>

int main() {
    char input[100];

    printf("Enter a string: ");
    scanf("%s", input);

    printf("Length of string: %lu\n", strlen(input));

    return 0;
}

7. まとめ

文字列操作は、C言語プログラミングの基本的なスキルです。文字列の構造を理解し、標準ライブラリを活用して効率的に操作しましょう。