こんにちは、硲勇司です。
今回は、char(文字)の配列を解説したいと思います。
私が解説する多くは、初めてC言語を触った人にとっては
かなり、理解が難しいと思います。
そのため、わからないワードや理解していない部分は
個人で調べてください。
プログラミング等で内容を調べる事は、かなり重要ですからね(笑)
では、内容に入っていきたいと思います。
まず前回使ったサイトを利用して、以下を打ち込んでみてください
char x[3] = {'a','b','c'};
これは、単純にcharの配列、つまり
文字が入る箱が並んでいると思い浮かべてください
コードを順に説明すると、char(文字)の箱が xという名前で 3 つ並んでおり、
a , b, c と順に入っているという事です。
前回も説明しましたが、文字を指定する場合、('')シングルクオーテーョンで囲ってくださいね
順に意味が分かると意外と簡単ですよね?
では、次にこれを入力してください。
char x[3] = {'a','b','c'};
printf("%c",x[1]);
これで、実行してみてください、
実行結果として、bと出力されたはずです。
解説すると、[a][b][c] という箱があり、
前回習った、printf()表示するという関数で、
(%c)文字を表示する 何を表示するか xの1番目を、
という、意味です。
プログラムでいう数え方は、0123と0から始ます。
どうでしょうか?、理解出来ましたか?
出力指定フォーマット(%dや%cなど)は色々ありますので、個人で調べてみてください。
では次に、printf()表示するという関数をいじってみましょう。
printf("私は%cを表示しています。",x[1]);
このようにprintf()をいじってみてください。
そして、実行すると
私はbを表示しています。
と表示されるはずです。
つまり、printf()関数は、%Cや%d などのフォーマット部分に、
後ろの変数が出力されるという事です。
では、出力指定フォーマットを変えてみましょう
char x[3] = {'a','b','c'};
printf("私は%dを表示しています。",x[1]);
98
なぜか、98と表示されていませんか?
それは、文字をPCで処理するにあたって、ASCⅡを使っているからです。
ASCⅡとは、コード表のことで、
bはASCⅡで 98 ですから、
つまり、bという文字を、整数で表示しろとなっているからです。
ネットで、ASCⅡと打てば、色々出てくるでしょう。
とりあえず、PCでは文字は整数で扱っていると思っていただいてかまいません
PCは結局、数字しか処理できないため、ASCⅡなどの整数と文字を表として、
登録していると解釈してください。
次は、このように入力してください
char x[]= {'a','b','c','d'};
printf("%s",x);
%sは文字列の表示ですね。つまり、文字一つではなく、全部表示しろという事
abcdと表示されたはずです。
なぜか、paiza.ioで私の場合は?が大量発生しましたけどw
charの[]は空白ですね、これは後に初期化している文字数に合わせて、
長さを決めることが出来るんです。
これで、Int(整数),char(文字),string(文字列)の宣言方法は理解できたでしょうか?
これらを参考に、この宣言は出来るのか?
などと、色々試して見てください、これが結構勉強になるんです。(笑)
次に、文字を読み取るプログラムを書いてみましょう。
int x = 0;
scanf("%d",&x);
printf("%d",x);
scanf()とは、文字を読み取る関数です。
引数として、文字列の形式入力をための変数を入れます。
ちなみに、引数とは、printf()やscanf()・for()などの
カッコの中身に入れる変数などのことです。
今回私が、使っている、piza.ioオンラインコンパイラーは下のタブにある、
入力というところを開いて入力し実行することで、出来ます。
、
上記のscanf()を解説していきましょう。
左から順に第一引数第二引数といい、
scanf()の場合、第一引数ではフォーマット指定をしています。
scanf()を使う場合、入れる変数名に、&を付けます。
入力は、整数以外にも、文字や文字列を受け取ることが出来ます。
char x[10];
scanf("%s",x);
printf("%s",x);
この場合は、どうなるでしょうか?
解説していきましょう。
文字列を指定する場合のフォーマット指定は%sでした。
この場合は、第二引数の&は必要ありません。
宣言は、charのため、変数の配列ごとに文字が入ってると考えてください。
初めての人は、理解に苦しむと思いますが、
自分なりに、上記のプリグラムを実行して、少し変えて実行してみたりと
サンプルプログラムをいじることで、理解が深まると思います。
色々と、試してみてください。