演習7-8 K&R プログラミング言語C

演習7-8

問題文の『ページ』というのが何のことなのかよくわからない。
とりあえず、ファイルを印字する前にファイル名とファイル番号(ページ番号)を見出しとして印字するようにした。

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
    char c;
    char *prog = argv[0];
    FILE *fp;
    int page_count = 1;

    if (argc < 2) {
        printf("Usage: %s FILE...\n", prog);
        exit(EXIT_FAILURE);
    }

    while (--argc > 0) {
        if ((fp = fopen(*++argv, "r")) == NULL) {
            fprintf(stderr, "%s can't open %s\n", prog, *argv);
            exit(EXIT_FAILURE);
        }
        printf("########## FILE : %s, PAGE : %d ##########\n", *argv, page_count);
        while ((c = getc(fp)) != EOF) {
            putchar(c);
        }
        page_count++;
        fclose(fp);
    }

    return 0;
}

実行結果

$ ./ex7-8 foo.txt moo.txt
########## FILE : foo.txt, PAGE : 1 ##########
hello, world
hello, world
hello, world
hello, world
hello, world
hello, world
########## FILE : moo.txt, PAGE : 2 ##########
hello, world
hello, world
hello, world
hello, world!
hello, world
hello, world
プログラミング言語C 第2版 ANSI規格準拠
B.W. カーニハン D.M. リッチー
共立出版
売り上げランキング: 9726
«
»