我試圖將File1.txt ">" File2.txt
作爲終端參數傳遞給我的程序,以覆蓋cat命令。但由於某種原因,該程序無法正常工作。雖然argc在上面定義的情況下是4,但程序中的條件仍然不成立。這裏是代碼:CommandLine參數不工作C
int main(int argc, char *argv[])
{
int readbytes,fp;
char buf[1024];
if(argc==2)
{
fp=open(argv[1],O_RDONLY);
dup2(0,fp);
close(fp);
readbytes=read(STDIN_FILENO,buf,1024);
write(STDOUT_FILENO,buf,readbytes);
}
if(argc==4)
{
printf("inside4");
fp=open(argv[1],O_RDONLY);
dup2(fp,0);
close(fp);
fp=open(argv[3],O_WRONLY|O_CREAT|O_TRUNC,S_IRWXU);
dup2(fp,1);
close(fp);
readbytes=read(STDIN_FILENO,buf,1024);
//printf("%c",buf);
write(STDOUT_FILENO,buf,readbytes);
}
return 0;
}
我找不到解決這個問題,所以我現在把它給專家。這個問題的原因是什麼?
注:
出於某種原因,當我發送./prog FILE1.TXT> FILE2.TXT編程,選擇argc==2
條件,但是ARGC爲4。這是爲什麼?
Regards
首先使用'\>'轉義'>'。第二次在'main()'中打印'argv'。 – trojanfoe
'./prog File1.txt> File2.txt'不同於'./prog File1.txt「>」File2.txt'。 – alk