サイトマップ / 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言語講座−それ自体コンパイルできる教材を使った講座です−