幾乎可以肯定80%的程序員都用過cat程序,它是Linux中用來連接多個文件的命令,自己模擬寫這樣一個小程序,將會是一次不錯的學習,Cat支持有參數和無參數兩種方式,
如果沒有參數,將使用標准輸入和輸出實現,如果有參數將會把參數裡指定的文件鏈接並在標准顯示上顯示,那麼我第一步是做什麼呢?當然是實現從一個指定的輸入流讀取字符
顯示在指定的輸出流上,代碼大致如下:
- //從src中復制內容到dest
- int fileCopy(FILE *src,FILE *dest)
- {
- int c;
-
- while((c=getc(src))!=EOF)
- putc(c,dest);
-
- return c;
- }
上面的代碼顯然不只能把內容復制到標准輸出,復制任何文件也是可以的,接下來的實現就比較簡單了:
- //main
- int main(int argc,char *argv[])
- {
- printf("Ctrl+C exit\n");
- if(argc==1)
- {//如果沒有參數,就從鍵盤獲取輸入並顯示在屏幕
- fileCopy(stdin,stdout);
- } else
- {
- char *input;//要連接的文件
- FILE *inf; //要連接的文件
- int count = 0;//連接成功個數
- while(--argc>0)
- {
- input = argv[argc];
- if((inf=fopen(input,"r"))==NULL)
- {//如果某個文件無法打開則跳過
- printf("\ncan't open %s\n",input);
- continue;
- }
- count++;
- fileCopy(inf,stdout);
- fclose(inf);
- }
- printf("**Cat %d file**",count);
- getchar();
- return 0;
- }
- }
要運行這個Cat就再簡單不過了,直接Cat或者Cat f1.c f2.o
感興趣的可以再這裡下載完整的程序。源碼下載:
免費下載地址在 http://linux.linuxidc.com/
用戶名與密碼都是www.linuxidc.com
具體下載目錄在 /2012年資料/10月/26日/C語言模擬Linux中的cat程序