文字列の変更
文字列の一部を変更する方法を確認します。これまでも何度か記述した通り文字列は「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[4] = '¥0';
上記の場合、変更前は「Hello」と言う文字列でしたが変更後は「Hell」と言う文字列になります。文字列は先頭の文字から「¥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 )