大阪市中央区 システムソフトウェア開発会社

営業時間:平日09:15〜18:15
MENU

プログラミング言語 C – 入出力続き

株式会社クローバーフィールドの経営理念
著者:津路高広
公開日:2018/10/28
最終更新日:2018/10/28
カテゴリー:技術情報
タグ:

津路です。

プログラミング言語C 第2版 ANSI規格準拠 K&R著(共立出版)を読んで、気になるところを書いています。
前回の続きで、Scanfの入力変換について、書籍の文章をピックアップします。

表7-2に変換指定子を掲載されています。
これを指して、「変換文字」という言葉が頻繁に使われていますが、d,i,o,u,x,c,s,e,f,gなどを指しています。
これは、実際に指定される変換の仕方を示す文字列の中の、引数をどう解釈してもらうかを指定するので、変換指定子でよいのではないでしょうか?

次に例をあげてコードを紹介しています。
「書式文字列の中の空白やタブは scanf では無視される。さらに、入力値を探すときに空白文字(ブランク、タブ、改行など)は飛ばされる。書式が固定されていない入力を読むには、一時には1行ずつ読んで、sscanf でそれを分離するのが最良なことが多い。」
ここは、「1 行読んでから、それをsscanf で分離するのが最良な」という意味のようです。
続いて、「例えば、上の形のどの日付を含むかわからない行を読みたいとしよう。」
この前で、日付書式として、25 Dec 1988, 10/25/1988などがあげられています。
「例えば、上記のいずれかの日付書式の行を読みたい」と解釈しました。


while (getline(line, sizeof(line)) > 0 {
if (sscanf(line, "%d %s %d", &day, monthname, &year) == 3)
else if(sscanf(line, "%d/%d/%d", &month, &day, &year) == 3)
else
printf("invalid: %s\n", line); /* 誤った形 */
}

「誤った形」ではなく、ここは「無効な書式」です。

7.5 ファイル・アクセス
cat が例として挙げられています。
「入出力の次の段階は、プログラムとはまだつながりのないファイルにアクセスするプログラムを書くことである。」
まだつながりのない?どういう意味なのか、最初さっぱり分かりませんでした。
原文「a file that is not already connected to the program」
つまり、標準入力でない、ローカルなどのファイルを指すようです。

「cat は、端末にファイルを印字するのにつかわれる。また、名前でファイルにアクセスできないプログラムのための汎用入力収集用にも使われる。」
後者の説明は、具体的にどういった意味でしょうか?考えておきたいと思います。

次に、cat x.c y.c というコマンドによって、2つのファイルの中身を出力できます。
「fopenは、x.c とか y.c のような外部名を受け取り、ハウスキーピングおよびOSとの何らかのやりとりをして、のちにファイルを読み書きするのに必要なポインタを返してくる。」
ここで、ハウスキーピングとは、準備作業を指すようです。

    上に戻る