ホーム » スタッフ » 斉藤徹 » 入出力関数とリダイレクト

2010年7月
« 6月   8月 »
 123
45678910
11121314151617
18192021222324
25262728293031

最近の投稿(電子情報)

アーカイブ

カテゴリー

入出力関数とリダイレクト

入出力系の関数の説明として、 getchar() / putchar() , fgetc() / fputc() , gets() / puts() , fgets() / fputs() などの関数の説明を行う。 この話の中で、while( (c = getchar()) != EOF ) putchar( toupper( c ) ) のような プログラムを紹介し、その話の中から、fgetc() の EOFチェックや、fgets() のNULLチェック という話などを交えながら説明を行う。

特に、安全な入力手段ということで、fgets() + sscanf() による方法の説明を行う。

char buff[ 100 ] ;
char name[ 100 ] ;
int  age ;
while( fgets( buff , sizeof( buff ) , stdin ) != NULL ) {
// 色々な入力チェック() ;
if ( sscanf( buff , "%s%d" , name , &age ) == 2 ) {
// 入力値を使った処理...
}
}

リダイレクト

前の説明の toupper のプログラムを使って、入力リダイレクト、出力リダイレクトの説明を行う。

Z:>> toupper.exe > upper.txt
This is a pen.
That is a pencil.
^Z
Z:> type upper.txt
THIS IS A PEN.
THAT IS A PENCIL.
Z:> toupper.exe < toupper.c
#INCLUDE <stdio.h>
VOID MAIN() {
INT C ;
:

本当は、標準エラー出力・バッファリング・パイプの話もしたいんだけど、 来週から前期期末試験だし、重要な用語も多い講義だったこともあり、試験後のまとめにて 説明を行う予定。 話せる範囲が減ったから、テストの出題範囲もちょいと狭いなぁ… さて、難しいひねった問題出すしかねぇなぁ…(^_^;