2013年5月31日金曜日

開発環境

プログラミング言語C 第2版 ANSI規格準拠 (B.W. カーニハン D.M. リッチー (著)、 石田 晴久 (翻訳)、共立出版)の第7章(入出力)、7.7(行の入出力)、演習7-8を解いてみる。

その他参考書籍

演習 7-8.

コード

sample.c

#include <stdio.h>
#include <string.h>
#define MAXLINE 1000

int main(int argc, char *argv[])
{
    char line[MAXLINE];
    long lineno = 1, pageno = 1;
    int c;
    FILE *fp;
    char *prog = argv[0];

    while (--argc > 0) {
        if((fp = fopen(*++argv, "r")) == NULL) {
            fprintf(stderr, "%s can't open %s\n", prog, *argv);
            exit(1);
        }
        if (pageno != 1)
            printf("\f");
        printf("page %d: %s\n", pageno++, *argv);
        while (fgets(line, MAXLINE, fp) != NULL) {
            printf("%ld: %s", lineno++, line);
        }
        lineno = 0;
    }
}

入出力結果(Terminal)

$ ./a.out
$ ./a.out sample.c
page 1: sample.c
1: #include <stdio.h>
2: #include <string.h>
3: #define MAXLINE 1000
4: 
5: int main(int argc, char *argv[])
6: {
7:     char line[MAXLINE];
8:     long lineno = 1, pageno = 1;
9:     int c;
10:     FILE *fp;
11:     char *prog = argv[0];
12: 
13:     while (--argc > 0) {
14:         if((fp = fopen(*++argv, "r")) == NULL) {
15:             fprintf(stderr, "%s can't open %s\n", prog, *argv);
16:             exit(1);
17:         }
18:         if (pageno != 1)
19:             printf("\f");
20:         printf("page %d: %s\n", pageno++, *argv);
21:         while (fgets(line, MAXLINE, fp) != NULL) {
22:             printf("%ld: %s", lineno++, line);
23:         }
24:         lineno = 0;
25:     }
26: }
$ ./a.out sample.c sample.txt
page 1: sample.c
1: #include <stdio.h>
2: #include <string.h>
3: #define MAXLINE 1000
4: 
5: int main(int argc, char *argv[])
6: {
7:     char line[MAXLINE];
8:     long lineno = 1, pageno = 1;
9:     int c;
10:     FILE *fp;
11:     char *prog = argv[0];
12: 
13:     while (--argc > 0) {
14:         if((fp = fopen(*++argv, "r")) == NULL) {
15:             fprintf(stderr, "%s can't open %s\n", prog, *argv);
16:             exit(1);
17:         }
18:         if (pageno != 1)
19:             printf("\f");
20:         printf("page %d: %s\n", pageno++, *argv);
21:         while (fgets(line, MAXLINE, fp) != NULL) {
22:             printf("%ld: %s", lineno++, line);
23:         }
24:         lineno = 0;
25:     }
26: }

page 2: sample.txt
0: Ah Love! could you and I with Fate conspire
1: To grasp this sorry Scheme of Things entire,
2: Would not we shatter it to bits -- and then
3: Re-mould it nearer to the Heart's Desire!
4: ah love! could you and i with fate conspire
5: to grasp this sorry scheme of things entire,
6: would not we shatter it to bits -- and then
7: re-mould it nearer to the heart's desire!
8: !@#$%Ah Love! could you and I with Fate conspire
9: !@#$%To grasp this sorry Scheme of Things entire,
10: !@#$%Would not we shatter it to bits -- and then
11: !@#$%Re-mould it nearer to the Heart's Desire!
12: !@#$%ah love! could you and i with fate conspire
13: !@#$%to grasp this sorry scheme of things entire,
14: !@#$%would not we shatter it to bits -- and then
15: !@#$%re-mould it nearer to the heart's desire!
$ ./a.out abcde sample.c
./a.out can't open abcde
$ ./a.out sample.c abcde
page 1: sample.c
1: #include <stdio.h>
2: #include <string.h>
3: #define MAXLINE 1000
4: 
5: int main(int argc, char *argv[])
6: {
7:     char line[MAXLINE];
8:     long lineno = 1, pageno = 1;
9:     int c;
10:     FILE *fp;
11:     char *prog = argv[0];
12: 
13:     while (--argc > 0) {
14:         if((fp = fopen(*++argv, "r")) == NULL) {
15:             fprintf(stderr, "%s can't open %s\n", prog, *argv);
16:             exit(1);
17:         }
18:         if (pageno != 1)
19:             printf("\f");
20:         printf("page %d: %s\n", pageno++, *argv);
21:         while (fgets(line, MAXLINE, fp) != NULL) {
22:             printf("%ld: %s", lineno++, line);
23:         }
24:         lineno = 0;
25:     }
26: }
./a.out can't open abcde
$

0 コメント:

コメントを投稿