はじめに
この実験では、C プログラミングにおいて文字列を配列として作成し、それを反復処理する方法を学びます。文字列を配列として宣言し、while ループを使って反復処理し、null 終端文字列を処理し、配列内の各文字列を表示します。これらのスキルは、テキストデータを扱い、より複雑な C アプリケーションを構築する際に欠かせないものです。
この実験では、以下の手順が扱われます。文字列を配列として宣言し、while ループを使って配列を反復処理し、null 終端文字列を処理し、配列内の各文字列を表示し、C プログラムをコンパイルして実行することです。この実験を完了することで、C 言語における文字列を配列として扱う方法をしっかりと理解することができます。これは C プログラミングにおける基本的な概念です。
文字列配列を宣言する
このステップでは、C プログラミングにおいて文字列を配列として宣言する方法を学びます。文字列を配列とすることで、1 つの変数に複数の文字列を格納することができる強力なデータ構造が得られます。
- WebIDE を開き、
~/projectディレクトリにstring-array.cという名前の新しいファイルを作成します。
cd ~/project
touch string-array.c
- WebIDE でファイルを開き、次のコードを追加します。
#include <stdio.h>
void main() {
const char* fruits[] = {
"Apple",
"Banana",
"Cherry",
"Date",
NULL
};
}
このコードは、C 言語において文字列を配列として宣言する方法を示しています。重要なコンポーネントを分解してみましょう。
const char*は、定数文字列ポインタの配列を示します。fruits[]は配列の名前です。- 配列には 4 つの果物の名前が文字列として含まれています。
NULLは配列の終端を示すために使用され、後の反復処理で役立ちます。
この配列は null 終端であることに注意してください。これは、最後の要素が NULL であることを意味します。これは、C 言語における文字列配列の一般的な慣習であり、反復処理中に配列の終端を判断するのに役立ちます。
while ループを使って配列を反復処理する
このステップでは、C プログラミングにおいて while ループを使って文字列を配列として反復処理する方法を学びます。前のステップを基に、string-array.c ファイルを修正して、果物の配列の内容を表示するようにします。
- WebIDE で
string-array.cファイルを開きます。 - 配列を反復処理するための while ループを含むようにコードを更新します。
#include <stdio.h>
void main() {
const char* fruits[] = {
"Apple",
"Banana",
"Cherry",
"Date",
NULL
};
int i = 0;
while (fruits[i]) {
printf("Fruit: %s\n", fruits[i]);
++i;
}
}
反復処理のロジックを分解してみましょう。
int i = 0はインデックスカウンタを初期化します。while (fruits[i])は、NULL 終端文字に到達するまでループを続けます。printf("Fruit: %s\n", fruits[i])は各果物の名前を表示します。++iはインデックスをインクリメントして次の要素に移動します。
- プログラムをコンパイルします。
gcc string-array.c -o string-array
- コンパイル済みのプログラムを実行します。
./string-array
出力例:
Fruit: Apple
Fruit: Banana
Fruit: Cherry
Fruit: Date
while ループを使うことで、配列の終端を示す NULL 終端文字をチェックすることで配列を反復処理することができます。この方法は、C 言語において文字列を配列として反復処理する際の一般的で効率的な方法です。
null 終端文字列を処理する
このステップでは、null 終端文字列について学び、C プログラミングにおいて文字列を配列の終端を示すためにどのように使用されるかを学びます。null 終端の理解は、文字列を配列として扱う際に重要です。
- WebIDE で
string-array.cファイルを開きます。 - null 終端と文字列の長さを示すようにコードを修正します。
#include <stdio.h>
#include <string.h>
void main() {
const char* fruits[] = {
"Apple",
"Banana",
"Cherry",
"Date",
NULL
};
int i = 0;
while (fruits[i]) {
printf("Fruit: %s\n", fruits[i]);
printf("Length of %s: %lu\n", fruits[i], strlen(fruits[i]));
++i;
}
printf("Total number of fruits: %d\n", i);
}
主な修正点:
strlen()関数を使用するために#include <string.h>を追加しました。- 文字列の長さを示すために
strlen()を使用しました。 - ループインデックスを使用して果物の合計数を表示しました。
- プログラムをコンパイルします。
gcc string-array.c -o string-array
- コンパイル済みのプログラムを実行します。
./string-array
出力例:
Fruit: Apple
Length of Apple: 5
Fruit: Banana
Length of Banana: 6
Fruit: Cherry
Length of Cherry: 6
Fruit: Date
Length of Date: 4
Total number of fruits: 4
null 終端の理解:
- 配列の末尾の
NULLは、シンチネル値として機能します。 - 反復処理中に配列の終端を判断するのに役立ちます。
strlen()は、null 終端文字 (\0) に到達するまで文字を数えることによって機能します。- ループは
NULLポインタに遭遇すると停止します。
配列内の各文字列を表示する
このステップでは、配列から文字列を表示するさまざまな方法を探ります。それには、書式設定オプションや高度な表示技術も含まれます。
- WebIDE で
string-array.cファイルを開きます。 - 複数の表示技術を示すようにコードを更新します。
#include <stdio.h>
#include <string.h>
void main() {
const char* fruits[] = {
"Apple",
"Banana",
"Cherry",
"Date",
NULL
};
// 方法 1: インデックスを使った基本的な表示
printf("方法 1: 基本的な表示\n");
int i = 0;
while (fruits[i]) {
printf("%d: %s\n", i + 1, fruits[i]);
++i;
}
// 方法 2: 整列を伴う書式設定による表示
printf("\n方法 2: 書式設定による表示\n");
i = 0;
while (fruits[i]) {
printf("| %-10s | 長さ:%2lu |\n", fruits[i], strlen(fruits[i]));
++i;
}
// 方法 3: 追加の書式設定による表示
printf("\n方法 3: 高度な表示\n");
i = 0;
while (fruits[i]) {
printf("果物番号 #%d: [%s] は %lu 文字です\n",
i + 1, fruits[i], strlen(fruits[i]));
++i;
}
}
- プログラムをコンパイルします。
gcc string-array.c -o string-array
- コンパイル済みのプログラムを実行します。
./string-array
出力例:
方法1: 基本的な表示
1: Apple
2: Banana
3: Cherry
4: Date
方法2: 書式設定による表示
| Apple | 長さ: 5 |
| Banana | 長さ: 6 |
| Cherry | 長さ: 6 |
| Date | 長さ: 4 |
方法3: 高度な表示
果物番号 #1: [Apple] は 5 文字です
果物番号 #2: [Banana] は 6 文字です
果物番号 #3: [Cherry] は 6 文字です
果物番号 #4: [Date] は 4 文字です
示された表示技術:
printf()を使った基本的なインデックス付け- 幅と整列を伴う書式設定による表示
- 追加情報を伴う高度な書式設定
- 文字列の長さを取得するための
strlen()の使用
まとめ
この実験では、C プログラミングにおいて文字列を配列として宣言する方法を学びました。これにより、1 つの変数に複数の文字列を格納することができます。また、while ループを使って配列を反復処理する方法、null 終端文字列を処理する方法、および配列内の各文字列を表示する方法を学びました。これらの技術は、C 言語における文字列をデータ構造として扱う際の基本事項であり、より高度な文字列操作タスクのための堅牢な基礎を提供します。



