STEP 5 - 文字データの扱い │ ├ 文字列 ├ 文字列の配列 ├ 文字列配列の初期化 ├ 文字列配列の文字列を表示する │ ├ 定数 │ └ 変数 └ 文字入出力専用の関数 ├ getchar() ├ putchar() ├ gets() ├ puts └ 文字専用関数のメリット |
Written by Yuki. http://ftc.suki.net/ |
<文字列> C言語には文字列の為のデータ型は存在しない。よって文字列を扱うには char型の配列を用いる。 char s[5]={'a','b','c','d','\0'}; ↑ヌル文字(キャラクターコードの 0番) C言語の文字列は必ずヌル文字で終了しなくてはならない。だから、配列は目的の数 +1必要。 char s[5]="abcd"; ' ダブルコーテーションで囲んだ文字列。 文字列が 4つなのに配列が 5なのは、やはり最後にヌル文字を付けるため。但し、 ダブルコーテーションで囲んだ文字列の場合は、自動的に文字列の終わりにヌル文字が追加される。 ※文字列を格納する char型配列を初期化する時は、要素数を省略した方が数え間違いを回避できる。 char a[]="abcdef"; ↑省略すれば文字の数だけ配列を作り、さらにヌル文字の分も自動的に作ってくれる。 ※配列を作る時、要素数は必ず 2以上になる。
<文字列の配列> 一次元配列ならば、例えば一つの文を文字列にできる。 二次元配列の場合、一つの文字列が幾つか存在する事になる。 char s[10][40]; ' 行は文字列の個数、列は文字列の文字数。 この配列の場合、10行×40字になり、列の最後にヌル文字がくるので、実質39字となる。
<文字列配列の初期化> 初期化はダブルコーテーションで囲った中の文字を一字ずつ配列に入れていく形になる。 char s[10]="apple"; ' 単体の文字列を初期化。 この場合 "a,p,p,l,e,\0,0,0,0,0" になる。 ↓文字列の数 char s[4][10]={"apple","orange","lemon","banana"}; ' 10文字分のサイズの文字列が 4つ格納できる配列。 ↑単体の文字列の文字数 ダブルコーテーションで囲った範囲が一つの文字列になり、カンマ毎に次の文字列へと移る。
<文字列配列の文字列を表示する> 行要素を指定する事で、その行に格納されている文字列全体を指定できる。 printf("%s\n",s[0]); ' 行要素を指定して、その文字列を表示(↑の場合 "apple" となる)。 ・C言語における文字の分類 ・定数 (1)文字定数 半角文字 1つの文字。シングルコーテーションで括る。 'a' 'A' 'ア' (2)文字列定数 2つ以上連続した文字。ダブルコーテーションで括る。 "abc" "アイウエオ" "123" 全角文字は 2文字分になる。 char c[5]="漢字"; ' 全角 2文字+ヌル文字 ・変数 char型の変数 半角文字を 1字記憶する。 char型の配列 文字列を記憶する。 ※コンピュータは文字を数値として管理している。キャラクターコードにより、数値に対応した文字を表示する。 キャラクターコード 0〜127(0x7F) ASCIIコード コンピュータが文字を使う時の標準規格。
<文字入出力専用の関数> (1)getchar() : 一文字入力 ' scanf(scanf("%c",&c);)の代りになる。 int getchar(void); ' intは関数の結果を知らせる為、返す値の型(戻り値)。 ' voidは関数へ与える値の型(引数)。 キーボードから入力された文字を戻り値として返す。この関数を実行するとキー入力待ちの状態になる。 (2)putchar() : 一文字出力(表示) int putchar(int or ch); ' 上と同じ要領で printf の代りになる。 引数(キャラクターコード)の文字を表示する。戻り値は出力した文字のキャラクターコードを返す。 char ch; ch = getchar(); ' 戻り値(入力された文字)を chへ格納(必ず括弧を付ける)。 fflush(stdin); putchar(ch); (3)gets() : 文字列入力 ' scanf("%s",s); char *gets(char *s); キーボードから入力した文字をリターンキーが押されるまで引数で与えた配列へ格納する。 リターンを押す事により、改行コード '\n' が入力されるが、これは格納されずヌル文字に変換される。 char s[256]; ' 文字列を格納する配列。 gets(s); ' 引数に配列名を指定する。 printf("%s\n",s); (4)puts() : 文字列出力(表示) int puts(char *s); 引数の配列に格納された文字列を出力する。自動的に改行を行うので '\n' を指定する必要が無い。 char s[]="puts関数のサンプル"; puts(s); ' char型配列の配列名が引数。 puts("1"); ' 文字列を引数にする。 puts("2"); ' 2を出力して改行。 puts("3"); ' 3を出力して改行。 (5)文字専用関数のメリット キャラクターコードで出力するので printfより処理が速く、プログラムのサイズも小さくなる。
← ← Back to BeforeStep | Go to NextStep → → |