Создание кошачьей программы - PullRequest
0 голосов
/ 15 ноября 2011

Я пытаюсь написать программу, которая реализует голую команду POSIX cat.Несмотря на то, что я написал код, и он работает нормально по умолчанию (без параметров) STDIN, для других он не работаетКто-нибудь может мне с этим помочь.Вот код:

#include <stdio.h>
#include <fcntl.h>
#include <unistd.h>
#include <stdlib.h>
#define BUFFSIZE 10240
#define MAX_FILES 127

int main(int argc, char *argv[])
{
    int n,t,i;
    char buf[BUFFSIZE];
    char *myargv[MAX_FILES];
    //aiparser(argv,myargv);
    if (argc == 1) {
        while(( n = read(STDIN_FILENO,buf,BUFFSIZE)) > 0) {
            if (write(STDOUT_FILENO, buf ,n ) != n) {
                perror("Write Error");
            }
        }
        if ( n < 0 ) {
            perror("Read Error");
        }
    }
    else {
        for ( i = 1; i < argc-1 ; i++) {
            if (strcmp(argv[i],"-") != 0 ) {
                t = open(argv[i],O_RDONLY);
            }
            else {
                t = STDIN_FILENO;
            }
            while(( n = read(t,buf,BUFFSIZE)) > 0) {
                if (write(STDOUT_FILENO, buf ,n ) != n) {
                    perror("Write Error");
                }
            }
            if ( n < 0 ) {
                perror("Read Error");
            }
            if (close(t) == -1) {
                perror("Closing Error");
            }
        }
        }   
    exit(0);
}

1 Ответ

2 голосов
/ 15 ноября 2011

Проблема заключается в следующем:

i

... что означает, что вы бы никогда фактически не выполняли цикл вообще, если вы толькопередать один аргумент.

...