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

演習7-1

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

enum { TOLOWER, TOUPPER };

int main(int argc, char *argv[])
{
    int c;
    int prog_type;
    int (*conv[2])(int) = { tolower, toupper };

    if (strcmp(argv[0], "./tolower") == 0) {
        prog_type = TOLOWER;
    } else if (strcmp(argv[0], "./toupper") == 0) {
        prog_type = TOUPPER;
    } else {
        fprintf(stderr, "error : Unknown program name %s\n", argv[0]);
        exit(EXIT_FAILURE);
    }

    while ((c = getchar()) != EOF) {
        putchar(conv[prog_type](c));
    }

    return 0;
}

実行結果

$ cat sample.txt
Hello, World!
$ ./tolower <sample.txt
hello, world!
$ ./toupper <sample.txt
HELLO, WORLD!
プログラミング言語C 第2版 ANSI規格準拠
B.W. カーニハン D.M. リッチー
共立出版
売り上げランキング: 9726
«
»