STEP 5 - 文字データの扱い
 │
 ├ 文字列文字列の配列文字列配列の初期化文字列配列の文字列を表示する
 │ ├ 定数
 │ └ 変数文字入出力専用の関数
   ├ getchar()
   ├ putchar()
   ├ gets()
   ├ puts
   └ 文字専用関数のメリット

猿でも解る C言語講座

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 → →