我正在尝试编写一个实现一个简单的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);
}
答案 0 :(得分:2)
问题在于:
我&lt;的argc-1
...这意味着如果你只传递一个参数,那么永远不会实际执行循环。