[英]Problems with C program that replicates `cat` command
我制作了一個 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 directory\n",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;
}
使用來源,盧克。 NetBSD cat.c 實現(參見raw_args
函數)首先將局部變量初始化為標准輸入。 然后它無條件地進入 argv 循環。 如果*argv
是 NULL,局部變量仍然設置,它從標准輸入讀取。 否則它會被每個 argv 元素覆蓋。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.