[[文字列練習ページ]] 整数型がintであるのに対して、文字型はcharで表します。一つのchar型の変数には一文字を格納できます。~ 大体は配列でchar a[10]のように定義して、文字列として扱います。配列で10文字分確保すれば10文字までの文章なら入れられますね?~ ~ ~ 【補足】07/06/23 20:00~ 文字列は、『最後の要素がヌル文字(空白文字, '\0')である』という規則があります。~ ヌル文字を含めて10文字なので、自由に格納できる文字は9文字までです。~ char a[3] = {'A', 'B', 'C'};~ char a[3] = {'A', 'B'};~ char a[3] = {'A', 'B', '\0'};~ char a[3] = {'A', '\0'};~ だと、上2つはchar型の配列。下2つは文字列であると解釈されます。~ ちなみに、char型の配列中の文字列とは、『最初に出てきたヌル文字まで』をさします。~ char a[7] = {'A', 'B', '\0', 'C', 'D', '\0'}; は、文字列としては、"AB"と解釈されます。~ ちょっと紛らわしそうだったので補足しました。~ ~ ~ 次に文字配列への値の代入方法です。~ char a[10]と定義したとすると、a[0]='A'のようにシングルコーテーションで囲んだ部分を代入します。~ 配列に一気に代入するときはchar a[3]={'A','B','C'}のように書くとa[0]にA,a[1]にB、a[2]にCが代入されます~ char bを定義すればb = a[0]のように整数型と同様に代入するのも可能です~ ~ ~ 【補足】07/06/22 21:17~ 【補足】07/06/23 21:17~ char a[3] = {'A', 'B', 'C'};~ char a[3] = {'A', 'B', '\0'};~ char a[3] = "AB"; // 次の要素に'\0'が自動的に付加される~ 上述のとおり、一番上はchar型の配列です。。下2つはどちらも文字列で、まったく同一の配列になります。~ 一番下の書き方は多少楽ができます。ただし、~ char a[3] = "ABC";~ と書くと、~ char a[3] = {'A', 'B', 'C', '\0'};~ と同じことなので配列の要素数を超えてしまいます。~ ~ ~ ~ 次に文字の出力及び入力についてです~ printf("文字は%c",a[1])と書けば、文字はBと出力されます。(上の例のように代入したときです)~ ~ scanf("%c",a)と書けばa[0]に入力から文字を代入できます。~ scanf("%s",a)と書いてABCと入力すると、char a[3] = {'A','B','C'}と同じように代入できます~ ~ 【補足】07/06/22 21:17~ 【補足】07/06/23 21:17~ scanf("%s", a)と書いて ABC と入力すると、~ a[0] = 'A';~ a[1] = 'B';~ a[2] = 'C';~ a[3] = '\0';~ と代入されます。これは、aが3以下の配列だとバグを含むプログラムになります。~ ですので、char a[3] = {'A', 'B', 'C'}とは同じではないはずです。~ ~ ~ ~ * scanfは配列を使う前までは&aのように書いていましたが、何故今回はaでいいのでしょうか?考えてみてください。 ~ ~ ~ 補足文責:ほへい