C言語-ファイル処理 |
2.1 テキストファイルの読み込み (2)
テキストファイルの内容を行番号付きで表示する。[pro2-3.c]
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: |
#include <stdio.h> #include <stdlib.h> #define STR_MAX 256 /* 文字列入力用配列長 */ int main(void) { FILE *fp; /* ファイルポインタ用 */ char fname[80]; /* ファイル名用 */ char buff[STR_MAX]; /* 文字列用 */ int line = 0; /* 行数カウント用 */ printf("ファイル名 : "); /* プロンプト表示 */ gets(fname); /* ファイル名入力 */ if((fp = fopen(fname, "r")) == NULL){ /* ファイルオープン */ printf("ファイルがオープンできません\n"); exit(1); /* 強制終了 */ } while(fgets(buff, STR_MAX, fp) != NULL){ /* 1行読み込み */ ++line; /* 行数カウント */ printf("%d:%s", line, buff); /* 1行表示 */ } fclose(fp); /* ファイルクローズ */ return(0); } |
ファイル名 : pro1-1.c |
【練習問題2-11】 pro2-3.cのプログラムに、テキスト表示後、テキストファイル全体の行数を表示する処理を追加しなさい。
テキストファイルの内容を指定した行数から行番号付き表示する。[pro2-4.c]
ファイル名入力後、行数を入力する。その行数からテキストファイルの最後までを表示する。
ヒント:カウントした行数が入力した行数以上のときに表示するようif文で判定する処理を追加する。
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: |
#include <stdio.h> #include <stdlib.h> #define STR_MAX 256 /* 文字列入力用配列長 */ int main(void) { FILE *fp; /* ファイルポインタ用 */ char fname[80]; /* ファイル名用 */ char buff[STR_MAX]; /* 文字列用 */ int line = 0; /* 行数カウント用 */ int start; /* 表示開始行用 */ printf("ファイル名 : "); /* プロンプト表示 */ gets(fname); /* ファイル名入力 */ printf("表示開始行 : "); /* プロンプト表示 */ scanf("%d", &start); /* 行数入力 */ if((fp = fopen(fname, "r")) == NULL){ /* ファイルオープン */ printf("ファイルがオープンできません\n"); exit(1); /* 強制終了 */ } while(fgets(buff, STR_MAX, fp) != NULL){ /* 1行読み込み */ ++line; /* 行数カウント */ if(line >= start) /* 表示開始行より大きいとき */ printf("%d:%s", line, buff); /* 1行表示 */ } fclose(fp); /* ファイルクローズ */ return(0); } |
ファイル名 : pro1-1.c |
【練習問題2-12】 pro2-4.cのプログラムに指定した行数までを表示する処理を追加しなさい。
ファイル名 : pro1-1.c |
ファイル名、表示開始行数、表示終了行数と入力する。開始行から終了行までのテキストファイルの内容を表示する。
ヒント:カウントした行数が入力した開始行以上のときに表示し、終了行以上になったらループを抜け出す。
Copyright © 2001 Hiroshi Masuda |