• 検索結果がありません。

付録 書式付き入力 —scanf—

ドキュメント内 新潟大学学術リポジトリ (ページ 59-62)

変換指定子 説 明

o

8進整数表記の文字の並びをunsigned int型の内部表現 形式に変換し、指定された記憶領域に格納する。[但し、

符号付きの入力データもOK。数字部は0 で始まってい ても良い。]

x X

16進整数表記の文字の並びを unsigned int型の内部表 現形式に変換し、指定された記憶領域に格納する。 [但 し、符号付きの入力データもOK。数字部は 0xや0X で 始まっていても良い。]

e E f g G

入力文字列を浮動小数点表記の実数と見てfloat型(型限 定子によってdoubleやlong doubleに指定変更可)の内 部表現形式に変換し、指定された 記憶領域に格納する。

c

「最大フィールド幅」部で指定された長さ(デフォルトは 1)の入力文字列を文字コードのまま(すなわち無変換で) 指定された記憶領域に格納する。但し、入力ストリーム の途中に空白類が現れても読み飛ばさない。また、格納 の際、ヌル文字’\0’は(最後に)付け加えられない。

s

空白類文字で区切られた入力文字列を次の入力と見て、

その文字コードの列を指定された記憶領域に格納する。

但し、格納の際、その文字コードの列の最後にヌル文字

’\0’ を付け加える。

[ 文字列 ]

文字集合 Σ =









文字列に現れる文字の集合

if 文字列が ’^’ 以外の文字で始まる 文字列に現れない文字の集合

if 文字列が ’^’ という文字で始まる 内の文字だけで構成される最長の文字列を入力データと して取り出し、その文字列の最後にヌル文字 ’\0’ を付 けた文字コードの列を指定された記憶領域に格納する。

p

ポインタ型データの出力形式(i.e.%p変換による出力の形 式;処理系に依存)をポインタ型の内部表現に変換し、指 定された記憶領域に格納する。

n それまでに読み込まれた文字の数を指定された記憶領域 に格納する。

%

次の文字が’%’ であることを確認する。[単に、書式指定 の中では ’%%’ で ’%’ という文字を表すということ。当 然、入力ストリームで次の文字が% になっていないと、

データ入力は中止(エラー)となる。]

5.6. 付録 書式付き入力 —scanf— 55

関数scanfにおける型限定子: データを格納する記憶領域の大きさについての認識を調

節するために、次の指定が可能。

型限定子 説 明

d, iまたはn変換の時、格納領域のデータ型がint と見 なされる。

(なし) u, o, xまたはX変換の時、格納領域のデータ型が un-signed int と見なされる。

e, E, f, g またはG変換の時、格納領域のデータ型が float と見なされる。

h d, iまたはn変換の時、格納領域のデータ型がshort int と見なされる。

u, o, xまたはX変換の時、格納領域のデータ型が un-signed short int と見なされる。

d, iまたはn変換の時、格納領域のデータ型が long int と見なされる。

l u, o, xまたはX変換の時、格納領域のデータ型が un-signed long int と見なされる。

e, E, f, gまたはG変換の時、格納領域のデータ型が double と見なされる。

L e,E,f,gまたはG変換の時、格納領域のデータ型がlong

double と見なされる。

関数scanfにおける最大フィールド幅の指定: 1個の入力データを表すための最大文字

数を正整数で指定できる。これが指定されていない場合は、文字数の上限は考慮されない。

関数scanfにおける代入抑止文字の指定: 星印 * を指定すると、この変換指定子に対

応する入力データは読み飛ばされる。

例 5.14 ([変換,代入抑止文字) 行末までのデータを読み飛ばすには、例えば次のように

書く。

scanf("%*[^\n]");

□演習 5.15 (理解度チェック) scanfの関数値は何か? また、途中の文字列を読み飛ば

すにはどうするか? 指定した文字から構成される文字列を読み込むにはどうするか?

より詳しくは、浦&原田(編)「C入門」の付録4、ケリー&ポール「CのABC(下)」の 第11.2節、等を参照して下さい。

6 処理の選択と繰り返し

3つの数の最大値(if文,if-else構文,論理演算, 条件演算子),

階乗 (for文), どうやって繰り返し構造を見出 すか?,

素数 (break文), 最大公約数 (ユークリッドの 互除法),

不定個の入力データの合計(while文),

元号表記→西暦表記(switch文),

プログラムを組み立てられない時は...,

付録 制御構造のまとめ

この節では、下図の形の処理の流れがC言語でどの様に記述されるのかを見る。

True

False

True False

True

False False

False True

True ・・・

・・・ ・・・

True False

True False

True False

入力

True False 入力失敗

ドキュメント内 新潟大学学術リポジトリ (ページ 59-62)