サイトマップ / C言語講座>出入り口>総目次>目次:ファイル>読み込みモードで開く||デモ用
[ファイル操作の基本]←このソース→[fgets( ) とputs( )]
/* 今日は、Cソースファイルの各行に行番号を付けて画面に出力します */
/* ソースプログラムの中で、getc( )とputchar( )が使われています。
#include <stdio.h> int getc(FILE *fp); 例:getc(fp); 戻り値 成功した場合 ファイル内の次の文字 失敗した場合 EOF
getc( )は成功した場合には、ファイルから読み込んだ文字の整数値を返します。何故、char型ではないのでしょうか。これによく似た関数に、getchar( )があります。こちらもキーボードから読み込んだ文字の整数値を返します。
#include <stdio.h> int getchar(void); 例:getchar( ); 戻り値 成功した場合 標準入力(キーボード)内の次の文字 失敗した場合 EOF
また、標準出力に1文字出力する関数putchar(c)についても、下記に示すように文字の整数値が返ってきます。
#include <stdio.h> int putchar(int c); 例:putchar(c); 戻り値 成功した場合 文字 c の整数値 失敗した場合 EOF
実は、これらの関数が失敗した時に返ってくるEOFは、 整数だからです。文字の入出力の場合、char型のデータであるはずの文字を、int型の整数として扱ってもエラーになることはありません。
ソースプログラムでは、ファイルを読み込み専用のモードで開きます。ファイルから文字を読み込む前に、最初の行番号とコロンを標準出力に出力しておきます。
1字ずつ読み込み、標準出力に出力し、改行コードが来たら、それを標準出力に出力し(改行します) 、次いで行番号とコロンを出力します。これをEOFが来るまで続けます。
"LTest.html"を"LTest.c"に変更し、同じホルダーに置いてからコンパイルしたものを実行してください。 */
#include <stdio.h> #include <stdlib.h> /* exit( )で必要 */ void main(void); void main(void) { FILE *fp; int c; /* 文字を読み込む */ int n = 1; /* 行番号用カウンタ */ /* ファイルを開けなかったら */ if ((fp = fopen("LTest.c", "r")) == NULL) { fprintf(stderr, "ファイルを開けません!\n"); exit(2); /* メッセージを表示して終了 */ } printf("/*%d:*/", n++); /* 1行目の行番号とコロンを表示 */ /* ファイルから EOFが現れるまで1字読み込む */ while ((c = getc(fp)) != EOF) { if (c == '\n') { /* 改行コードなら */ putchar(c); /* 改行して */ printf("/*%d:*/", n++); /* 行番号を表示し */ } /* 行番号をインクリメント */ else /* 改行コード以外なら */ putchar(c); /* その文字を表示 */ } fclose (fp); /* ファイルを閉じる */ } |
/* 今回は画面に出力しましたが、ファイルに出力すれば、ソースプログラムに行番号を書き込むユーテリティーになります。 */
[ファイル操作の基本]←このソース→[fgets( ) とputs( )]
/* (C) 2000- YFプロ. All Rights Reserved. */ 提供:C言語講座−それ自体コンパイルできる教材を使った講座です−