簡體   English   中英

為什么我的C程序不打印任何內容?

[英]Why is my C program not printing anything out?

我的代碼應該從命令行中讀取的2個文件中讀取,然后將它們打印輸出到STDOUT,除非給出第3個參數,在這種情況下,它應該打印到該文件而不是STDOUT。 我感覺一切正常,但是當我運行程序時,什么都沒打印出來。 關於為什么不可以發現的任何東西? 新的眼睛總是有幫助的。

int main(int ARGC, char *ARGV[]) {
   char buf1[1024];
   char buf2[1024];
   int n=0; 
   int m=0; 
   int fd=open(ARGV[1],O_RDONLY);
   int fd2=open(ARGV[2],O_RDONLY);
   int fd3=open(ARGV[3],O_WRONLY);

   do {
      int n= read(fd,buf1,sizeof(buf1));
      if(n<0) {
         perror("read error1");
      }
      if(fd3!=0) {
         write(fd3,buf1,n);
      }

      if(fd3==0) {
         write(STDOUT_FILENO,buf1,n);
      }

   } while(n==sizeof(buf1));

   do{
      int m=read(fd2,buf2,sizeof(buf2));
      if(m<0) {
         perror("read error2");
      }
      if(fd3!=0) {
         write(fd3,buf2,m);
      }
      if(fd3==0) {
         write(STDOUT_FILENO,buf2,m);
      }
   } while(m==sizeof(buf2));
}

離開第三個參數時,您永遠不會寫屏幕。

int fd3=open(ARGV[3],O_WRONLY); 如果ARGV[3]為空或為垃圾,則可能fd3設置為-1 ,而不是0 因此,您永遠不會寫入STDOUT_FILENO,而是寫入無效的文件描述符。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM