C/C++ · 2 min read · Oct 09, 2025

C/C++を段階的に学ぶ - ページ8

08. 段階的C/C++ — Cプログラミング - 文字列

文字列
- はじめに
- 文字列の特徴
- 文字列の操作

| | 1. 文字列の定義

  1. 文字列の初期化
  2. 文字列の読み取りと印刷
  3. 埋め込まれた空白の読み取り
  4. 文字列の長さ
  5. 文字列と関数
  6. 文字列の配列 |

はじめに

配列は文字列を調べるために使用され、一般に文字列は配列型の変数です。
文字列は空白を含む文字の集合であり、単語は空白を除く文字の集合です。すべての文字列変数は、‘\0’ヌル文字で終了し、インデックス値は0から始まります。

すべての文字列には以下の特徴があります:

| | 1. 文字の集合でなければなりません(すなわち、文字、数字、特殊文字)。

  1. すべての文字列はNULL文字(すなわち、‘\0’)で終了しなければなりません。
  2. 各文字を識別するために、インデックスと呼ばれる一意の正の数があります。
  3. インデックス値は0から始まらなければなりません。
  4. 文字列内の文字へのランダムアクセスが可能です。
  5. 文字列は配列のように固定サイズで宣言されなければなりません。 |

例えば、次の例を考えてみましょう:

char str = " magic";

| | |

文字列を操作するためにさまざまな文字列ライブラリ関数が使用されます。文字列の配列は、char型の配列の配列です。

文字列の操作

ライブラリの文字列関数を使用するよりも、はるかに優れた操作を実行できます。
文字列は以下の操作を受け入れることができます。

| | 1. 文字列の定義

  1. 文字列の初期化
  2. 文字列の読み取りと印刷
  3. 埋め込まれた空白の読み取り
  4. 文字列の長さ
  5. 文字列と関数
  6. 文字列の配列 |

1. 文字列の定義

すべての変数はプログラムの最初に宣言されなければなりません。
文字列変数の定義は以下の通りです。

| | |

2. 文字列の初期化

文字列は以下の方法で初期化できます。

| | 1. 直接代入 char name[10] = "Ashitha"; “Ashitha”をnameに代入し、残りの場所は空白のままにします。 | 2. サイズなしの直接代入 char name[] = "Ashitha"; “Ashitha”をnameに代入し、定数のサイズまで幅を固定します。 | | | 3. デザイン時代入 char name[10];
strcpy(name, “Ashitha”); 文字列関数を使用することで可能です。
しかし、Cは次のような代入をサポートしていません:
name = “Ashitha”; | 4. 実行時代入 char name[10];
scanf(“%s”, name); 実行時に定数値を変数に受け入れ、代入します。 |

3. 文字列の読み取りと印刷

Cは文字列定数を読み取り、印刷するためのさまざまなタイプの文字列関数を提供します。以下にリストします。

| | 入力文
getch
getche
getchar
gets
scanf | 出力文
putch

putchar
puts
printf |

| | / 文字列を受け入れて表示するプログラム /
/ 51_strings.c /
#include
int main()
{
char str[20];
scanf(“%s”, str);
printf(“%s” str);
return 0;
} |

| | / プロンプト付きで文字列を受け入れて表示するプログラム /
/ 52_strings.c /
#include
int main( )
{
char str[20];
printf(“文字列を入力してください :”); scanf(“%s”, str);
printf(“\nあなたが入力したのは : %s”, str);
return 0;
} |

4. 埋め込まれた空白の読み取り

scanfは文字列を受け入れ、単一の単語からなる文字列を読み取りますが、空白の後に入力されたものは捨てられます。

例。 文字列を入力してください : Law is a bottomless pit.
あなたが入力したのは : Law

空白を含むテキストを読み取るには、別の関数gets()を使用します。

| | /埋め込まれた空白を持つ文字列を読み取る /
/ 53_gets.c /
const int MAX = 80;
int main()
{
char str[MAX];
print(“文字列を入力してください :”); gets(str);
printf(“あなたが入力したのは :”); puts(str);
return 0;
} |

5. 文字列の長さ

すべての文字列は、その定数に応じて固定の長さを持っています。
以下のプログラムは、文字列の長さを見つける方法を示しています。

| | / 与えられた文字列の長さを見つけるためのプログラム /
/ 53_length.c /
#include
int main()
{
int i=0;
char str[50];
printf(“文字列を入力してください “); gets(str);
while(str[i] != ‘\0’) i++;
printf(“長さは %d”, i);
return 0;
} |

6. 文字列と関数

関数は、特定のタスクを実行する自己完結型の文のブロックです。文字列を整理する最良の方法です。
以下は、関数を使用した文字列の整理の例です。

| | / 文字列の長さを見つけるプログラム /
/ 54_len.c /
#include
int len_str(char s[]); int main()
{
int l; char str[50];
printf(“文字列を入力してください “); gets(str);
l = len_str(str);
printf(“\n文字列の長さ : %d”, l);
} int len_str(char s[])
{
int l=0;
while(s[l] != ‘\0’) l++;
return l;
} |

| | / 文字列を受け入れて印刷するプログラム /
/ 55_str.c /
#include
void disp_str(char s[]); int main()
{
char str[50];
printf(“文字列を入力してください “); gets(str);
disp_str(str);
return 0;
} void disp_str(char s[])
{
int i=0;
while( s[i] != ‘\0’ ) putch(s[i++]);
} |

7. 文字列の配列

配列は文字列を調べるために使用され、一般に文字列は配列型の変数です。したがって、文字列の配列にアクセスできます。
以下の例は、文字列の配列がどのように整理されているかを示しています。

| | / 文字列の配列を表示するプログラム /
/ 56_display.c /
#include
void main()
{
char week[7][] = { “日曜日”, “月曜日”, “火曜日”, “水曜日”, “木曜日”, “金曜日”, “土曜日” };
int i;
for( i = 0; i<7; i++) puts(week[i]);
} |

| | / 文字列の配列を受け入れて表示するプログラム /
/ 57_strings.c /
#include
void main()
{
char names[7][10]; int i;
for( i = 0; i<7; i++) gets(names[i]);
for( i = 0; i<7; i++) puts(names[i]);
} |

Share: X/Twitter LinkedIn

新しい投稿を受信箱で受け取る

スパムはありません。いつでも購読を解除できます。