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
1:#include <stdio.h>
2:int main(void)
3:{
4:    char c;
5:
6:    printf("文字 = ");
7:    c = getchar();
8:    printf("%c(%X) ", c, c);
9:    return(0);
10:}




【練習問題2-11】 pro2-3.cのプログラムに、テキスト表示後、テキストファイル全体の行数を表示する処理を追加しなさい。

実行結果

ファイル名 : pro1-1.c
1:#include <stdio.h>
2:int main(void)
3:{
4:    char c;
5:
6:    printf("文字 = ");
7:    c = getchar();
8:    printf("%c(%X) ", c, c);
9:    return(0);
10:}
全体の行数=10


  
  




テキストファイルの内容を指定した行数から行番号付き表示する。[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
表示開始行 : 4
4: char c;

9: return(0);
10:}




【練習問題2-12】 pro2-4.cのプログラムに指定した行数までを表示する処理を追加しなさい。

実行結果

ファイル名 : pro1-1.c
表示開始行 : 6
表示終了行 : 8
6: printf("文字列 = ");
7: c = getchar();
8: printf("%c(%X) ", c, c);


 ファイル名、表示開始行数、表示終了行数と入力する。開始行から終了行までのテキストファイルの内容を表示する。
 ヒント:カウントした行数が入力した開始行以上のときに表示し、終了行以上になったらループを抜け出す。

 


前へ 目次へ 次へ 
Copyright © 2001 Hiroshi Masuda 

 

 

inserted by FC2 system