2013年12月23日月曜日

開発環境

C実践プログラミング 第3版 (Steve Oualline (著)、 望月 康司 (監訳) (翻訳)、谷口 功 (翻訳)、オライリー・ジャパン)のⅢ部(高度なプログラミング概念)の18章(モジュールプログラミング)、18-14(プログラミング実習)、実習18-2.を解いてみる。

その他参考書籍

18-14(プログラミング実習)、実習18-2.

コード

temp.h

#include <stdio.h>
extern FILE *search_open(char *names[]);

コード

search_open.c

#include <stdio.h>

FILE *search_open(char *names[])
{
    FILE *in_file;
    int i;
    while(*names != NULL){
        in_file = fopen(*names, "r");
        if(in_file != NULL){
            return in_file;
        }
        names++;
    }
    return NULL;
}

コード

sample.c

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

int main(int argc, char *argv[])
{
    char line[100];
    char *str_ptr;
    FILE *in_file;
    
    argv++;
    in_file = search_open(argv);
    if(in_file != NULL){
        while(1){
            str_ptr = fgets(line, sizeof(line), in_file);
            if(str_ptr == NULL){
                 break;
            }
            printf("%s", line);
        }
    } else {
        printf("ファイルは見つからなかった\n");
    }
    return (0);
}

Makefile

CC=cc
CFLAGS=-g
OBJS=sample.o search_open.o

all: sample

sample: $(OBJS)
 $(CC) $(CFLAGS) -o sample $(OBJS)

sample.o: search_open.h sample.c

search_open.o: search_open.c

clean:
 rm -f sample sample.o search_open.o

入出力結果(Terminal)

$ make
make: Nothing to be done for `all'.
$ ./sample ab cd ef sample.c
#include "search_open.h"
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
    char line[100];
    char *str_ptr;
    FILE *in_file;
    
    argv++;
    in_file = search_open(argv);
    if(in_file != NULL){
        while(1){
            str_ptr = fgets(line, sizeof(line), in_file);
            if(str_ptr == NULL){
                 break;
            }
            printf("%s", line);
        }
    } else {
        printf("ファイルは見つからなかった\n");
    }
    return (0);
}
$ ./sample ab cd
ファイルは見つからなかった
$

0 コメント:

コメントを投稿