复制"cat"命令的C程序存在问题



我制作了一个C程序,它执行cat命令的操作,但遇到了一个问题。现在,当添加多个文件作为输入时,它工作得很好。现在,当我不将任何文件作为参数时,它不会显示在stdin上读取的内容。我该怎么解决这个问题?

#include<stdio.h>
#include<fcntl.h>
#include<stdarg.h>
#include<stdlib.h>
#include    "ourhdr.h"
#define BUFFSIZE    8192
int main(int argc,char *argv[])
{
int fd;
int n;
char* index=argv[0];
char buf[BUFFSIZE];
if(argc ==1)
{
printf("<sintaxa> fisier1 fisier2....n");
}
else
while(--argc>0)
{
if((fd = open(*++argv,O_RDONLY)) == -1)
{
printf("%s: %s: No such file or directoryn",index,*argv);
}
else
{
while((n=read(fd,buf,BUFFSIZE)) > 0)
if(write(STDOUT_FILENO,buf,n) != n)
{
err_sys("write error");
}
if(n<0)
{
err_sys("read error");
}
close(fd);
}
}
return 0;
}

使用源Luke。NetBSD cat.c实现(请参阅raw_args函数(首先将一个本地变量初始化为stdin。然后它无条件地进入argv循环。如果*argv为NULL,则仍然设置本地变量,并且它从stdin读取。否则,它将为每个argv元素覆盖。

相关内容

最新更新