サイトマップ / C言語講座出入り口総目次目次:入出力(1)>文字を入力して画面に表示

青い直線

文字を入力して画面に表示

青い直線

[整数を入力して画面に表示]←このソース→[浮動小数点数の入力]

/* 今回のソースプログラムをコンパイルして実行すると、画面に"文字を幾つか入力して下さい"と表示され、文字を幾つか入力すると、"あなたの入力した文字は - - - です。"と表示され、1行改行して終わります。 */

/* ここからソースプログラム */

#include <stdio.h>

void main(void);

void main(void)
{
        char str[256];        /* char 型の変数の配列の宣言 */

        printf("文字を幾つか入力して下さい  ");
        scanf("%s", str);

        printf("あなたの入力した文字は %s です。\n", str);
}

/* ここまでソースプログラム */

/* 今日は文字列の入力と表示について学びます。

char 型の整数

ソースプログラムの main 関数の中に、下記の記述があります。

    char str[256];    // char 型の変数の配列の宣言

ここで、'str[256]'という名前の局所変数を宣言しています。'str[256]'の前に、'char' という言葉があります。'char'はこの変数がcharという型であることを意味します。

char 型は1バイトの整数です。文字(character)をしまうのによく使われるので、こう呼ばれます。

1バイトは8ビットです。
1ビットで表せるのは0か1です。
1バイトで表せるのは2の8乗、即ち256です。
char型は0から255の数を表すことができます。

重要:char型は0から255の数を表すことができる。

配列

'str[256]'の256という数字は、メモリ上に256個のchar型のデータを割り付けるという意味です。このデータはメモリ上で必ず連続して確保されることが保証されています。このように、同じ型のデータが連続して存在するものを、配列といいます。個々のデータを配列の要素といいます。

'[ ]'の中の数字のことを添字といいます。C言語では、配列の添字は0から始まります。上記の例で、配列の先頭要素にアクセス(データを書き込みまたは読み込みすること)するには、'str[0]'とします。添字が0から始まるので、最後の要素は'str[255]'となることに、特にご注意下さい。'str[256]'に値を書き込むと、プログラム上の他のデータを破壊します。最悪の場合、システムが破壊され、プログラムが暴走します。

重要:配列は同じ型のデータが連続して存在するものをいう。

重要:配列の個々のデータを要素という。

重要:配列の要素は添字でアクセスする。

main関数の中に、今回もscanf( )があります。下記に示します。

    scanf("%s", str);

文字列

scanf( )の( )の中に、二つの引数があります。最初の引数は、"%s"です。これは「キーボードからの入力を文字列に変換せよ」ということです。文字の並びを文字列といいます。C言語の文字列は、文字が0個以上連続し、ヌル(NULL)文字という特別な文字で終わります。NULL文字の値を'\0'で表すことがあります。いずれ詳しく説明します。

重要:Cの文字列はNULL文字で終わる。

配列の名前

次の引数は'str'です。前回の整数の入力の時には、変数の前に'&'が付いていて、それがその変数のアドレスを示しました。今回は'&'が付いていません。'str'は配列の名前です。配列の名前はC言語では、配列の先頭要素のアドレスを示します。従って、'&'を付ける必要がありません。

重要:配列の名前は配列の先頭要素のアドレスを指す。

scanf( )を実行すると、キーボードからの入力が文字列に変換されて、'str[256]' の存在するアドレスにしまわれます。いずれ詳しく説明しますが、scanf( )は一度に複数の変数にデータを代入する事ができます。この際、" "の中でデータをスペースで区切ります。このため、入力する文字の中にスペース(半角)を入れると、スペースの前の文字までが、'str[256]'に入ります。そうなることを、プログラムを実行して確かめて下さい。

main関数の{ }の中の最後に、もう一度、printf( ) が出てきます。下記に示します。

    printf("あなたの入力した文字は %s です。\n", str);

" " の中にscanf( )にあったのと同じ、'%s'があります。これは「このprintf( )の2番目の引数'str'を文字列に変換して、画面に表示せよ」ということです。

これまで、幾つかCのソースプログラムを見てきました。printf( )の" "の中に日本語が入っています。コンピュータは数字しか扱えないので、文字は数字で管理されています。英文字と英数字は7ビット、即ち、0から127の数字で管理されています。この理由で、メモリが高価だった1960年代初期には、1バイトが7ビットのコンピュータも存在していました。その後、IBMの提案で、1バイトは8ビットに統一されました。1バイトで表せる数字は0から255迄です。そこで、日本では1ビット増えたために使えるようになった、128から255の所に、半角のカタカナを割り当てました。全角の日本語文字を表すには、1文字で2バイト使います。

C言語で使える文字はprintf( )等の" "の中を除いて、7ビットで表すことのできる英文字と英数字、改行、タブ等に限ります。半角のカタカナや、日本の文字は使用できません。スペースについても、' 'は良いが、' 'はエラーになります。ソースプログラムの中に2バイト文字のスペースが入ると、コンパイルエラーになりますが、スペースは見えないので探すのが大変です。 */

[整数を入力して画面に表示]←このソース→[浮動小数点数の入力]

青い直線

/* (C) 2000- YFプロ. All Rights Reserved. */    提供:C言語講座−それ自体コンパイルできる教材を使った講座です−

青い直線

サイトマップ / C言語講座出入り口総目次目次:入出力(1)>文字を入力して画面に表示