もっと簡単にchar型の配列に文字列データ"neko"を格納(配列の初期化)してみる 


もっと簡単にchar型の配列に文字列データ"neko"を格納(配列の初期化)してみる 



ソーラー


「配列に文字列データも格納できるようになったんだ。


やったね💖」


アレサ「大進歩です。ソーラーさん」


ソーラー


「さらに


文字列データを配列に取り込む(配列の初期化)にはもっと簡単な方法があります。


今までは配列hairetuに文字列データ"neko"を取り込むのに


次のプログラムのように


配列変数

hairetu[0]

hairetu[1]

hairetu[2]

hairetu[3]

hairetu[4]



文字データ

'n'

'e'

'k'

'o'

'\0'



1文字ずつ👇」



#include <stdio.h>


int main(void)

{

char hairetu[5];

hairetu[0]='n';

hairetu[1]='e';

hairetu[2]='k';

hairetu[3]='o';

hairetu[4]='\0';


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


return 0;

}


プログラムの実行結果


neko



ソーラー「👆このプログラムのように


格納してきました。


この配列の初期化方法(文字データ格納方法)を簡略化して


次のようにプログラムを記述することもできます。


#include <stdio.h>


int main(void)

{

char hairetu[5]={'n','e','k','o','\0'};//👈ココの部分ですね

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

return 0;

}


プログラムの実行結果


neko



ソーラー「今までのように


この初期化方法でも


配列hairetuに文字列データ"neko"がとりこまれているのが


プログラムの実行結果に


nekoが表示されていることからわかります。


文字列データ"neko"がとりこまれているということは


お馴染みヌル文字(ナル文字)\0もちゃんと配列hairetuに格納されているよね



ただし以。下のプログラムをご覧ください


(👆この表現おもしろいかな by ソーラー)



#include <stdio.h>


int main(void)

{

char hairetu[5];

hairetu[5]={'n','e','k','o','\0'};


printf("%s",hairetu);

return 0;

}


プログラムの実行結果


EAZY IDECの場合


ファイル「C:/Users/solarplexuss/AppData/Local/EasyIDEC/project/aaaaa/main.c」の

「6行目」で記述エラーを発見しました。

unrecognized character \x81


Visual Studioの場合


エラー C2146 構文エラー: ';' が、識別子 '=' の前に必要です。

エラー C2065 '=': 定義されていない識別子です。

エラー (アクティブ) E0065 ';' が必要です


ソーラー「


このプログラムの実行結果をみてもわかるように


char hairetu[5]={'n','e','k','o','\0'}; と記述するところを


char hairetu[5];(配列宣言)

hairetu[5]={'n','e','k','o','\0'} (配列の初期化)


のように


配列宣言と配列の初期化をきりはなして行うことはできないんだよ。


そして


さらにもっと簡単に


配列hairetuに文字列データ"neko"を


char hairetu[5]="neko";


と記入してとりこむこともできます。


この場合でも


ナル文字の\0の分だけ


char hairetu[4]="neko";


でなく


char hairetu[5]="neko";



1つ分余計に要素数をかきこまなければ


いけません



配列変数

hairetu[0]

hairetu[1]

hairetu[2]

hairetu[3]

hairetu[4]



文字データ

'n'

'e'

'k'

'o'

'\0'



格納されるというわけです



char hairetu[5]="neko";のように


一度に配列宣言と配列の初期化をおこなう必要があります。


さらにさらにもっと簡単に配列の[]の中の要素数も記述せず


char hairetu[]={'n','e','k','o','\0'};や

char hairetu[]="neko";と


記述する方法があります。


この場合


自動的に{'n','e','k','o','\0'}や"neko"にあわせて


char型の配列hairetu内に


配列変数

hairetu[0]

hairetu[1]

hairetu[2]

hairetu[3]

hairetu[4]

が生成され


hairetu[0]

hairetu[1]

hairetu[2]

hairetu[3]

hairetu[4]


hairetu[0]='n';

hairetu[1]='e';

hairetu[2]='k';

hairetu[3]='o';

hairetu[4]='\0';


n'

'e'

'k'

'o'

'\0'(ヌル文字も)


が格納されていきます。」



アレサ「わかりやすいですの😊」



ソーラー 「アレサ、char型の配列の初期化法はこんな感じ・・・かな?


その中でも


char hairetu[]="neko"と配列に文字列データをとりこむのが一番簡単な方法かな?」


アレサ「はい、(^^)/


これで一文字ずつ配列に文字データを格納しなくても


簡単に配列に文字列データをとりこむことができるようになりました。」


ソーラー「というわけでえ~


一番簡単な初期化方法で文字列データを配列にとりこんで


その文字列データをprintf出力表示してみたいと思います


さぁて お披露目してみると~~


#include <stdio.h>


int main(void)

{

char hairetu[ ]="neko funnjyatta";

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

return 0;

}


プログラムの実行結果


neko funnjyatta


となるわけです。


ちゃんとnekoとfunnjyattaの間の空白までprintf出力表示されてるよ


お茶目さんだね。」

  • Twitterで共有
  • Facebookで共有
  • はてなブックマークでブックマーク

作者を応援しよう!

ハートをクリックで、簡単に応援の気持ちを伝えられます。(ログインが必要です)

応援したユーザー

応援すると応援コメントも書けます

新規登録で充実の読書を

マイページ
読書の状況から作品を自動で分類して簡単に管理できる
小説の未読話数がひと目でわかり前回の続きから読める
フォローしたユーザーの活動を追える
通知
小説の更新や作者の新作の情報を受け取れる
閲覧履歴
以前読んだ小説が一覧で見つけやすい
新規ユーザー登録無料

アカウントをお持ちの方はログイン

カクヨムで可能な読書体験をくわしく知る