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