文字列を変更する

一度 char 型の配列に格納された文字列はあとから配列の要素に格納されている値を変更することで文字列の一部を変更することができます。ここでは C 言語で文字列の値をあとから変更する方法について解説します。

(Last modified: )

配列を使った文字列の格納

文字列の一部を変更する方法を確認します。これまでも何度か記述した通り文字列は char 型の配列ですので変更したい要素を直接書き換えることで文字列の一部分を変更することができます。

char str[6] = {'H', 'e', 'l', 'l', 'o', '\0'};
str[2] = 'L';

上記の場合、変更前は "Hello" と言う文字列でしたが変更後は "HeLlo" と言う文字列になります。また配列の要素数に余裕があれば \0 の位置を書き換えて文字列の長さを変えることもできます。

char str[10] = {'H', 'e', 'l', 'l', 'o', '\0'};
str[5] = '1';
str[6] = '\0';

上記の場合、変更前は "Hello" と言う文字列でしたが変更後は "HeLlo!" と言う文字列になります。同じように文字列の途中の文字を \0 に書き換えることで、文字列を短くする事もできます。

char str[6] = {'H', 'e', 'l', 'l', 'o', '\0'};
str[3] = '\0';

上記の場合、変更前は "Hello" と言う文字列でしたが変更後は "Hel" と言う文字列になります。文字列は先頭の文字から \0 が現れるよりも前の文字までとなるため、 \0 よりもあとに他の文字などが格納されていても無視されます。

文字列を変更する場合の注意点

文字列を宣言と同時に初期化する場合はダブルクオーテーション( " )で文字の集まりを囲うことで初期化することが出来ましたが、宣言の時以外にはこの書式は使えません。

char str[6];
str = "Hello";

よって上記のような記述はエラーとなりますので注意して下さい。(このような場合は strcpy と言う関数を利用します。詳細は別のページで確認します)。

サンプルコード

では簡単なサンプルプログラムを作成して試してみます。

#include <stdio.h>

int main(void){
  char str[7] = {'H', 'e', 'l', 'l', 'o', '\0'};

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

  str[0] = 'h';
  printf("%s\n", str);

  str[5] = '!';
  str[6] = '\0';
  printf("%s\n", str);

  return 0;
}

上記を「test3-1.c」の名前で保存します。まずコンパイルを行います。

文字列の変更

コンパイルが終わりましたら「test3-1」と入力して実行します。

文字列の変更

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。