C语言模拟Linux中的cat程序


几乎可以肯定80%的程序员都用过cat程序,它是Linux中用来连接多个文件的命令,自己模拟写这样一个小程序,将会是一次不错的学习,Cat支持有参数和无参数两种方式,

如果没有参数,将使用标准输入和输出实现,如果有参数将会把参数里指定的文件链接并在标准显示上显示,那么我第一步是做什么呢?当然是实现从一个指定的输入流读取字符

显示在指定的输出流上,代码大致如下:

  1. //从src中复制内容到dest  
  2. int  fileCopy(FILE *src,FILE *dest) 
  3.         int c; 
  4.  
  5.          while((c=getc(src))!=EOF) 
  6.                putc(c,dest);             
  7.          
  8.             return c; 

上面的代码显然不只能把内容复制到标准输出,复制任何文件也是可以的,接下来的实现就比较简单了:

  1. //main  
  2. int main(int argc,char *argv[]) 
  3.     printf("Ctrl+C exit\n"); 
  4.     if(argc==1) 
  5.     {//如果没有参数,就从键盘获取输入并显示在屏幕  
  6.          fileCopy(stdin,stdout);       
  7.     } else 
  8.     { 
  9.         char *input;//要连接的文件   
  10.         FILE *inf;  //要连接的文件   
  11.         int  count = 0;//连接成功个数   
  12.         while(--argc>0) 
  13.         { 
  14.              input = argv[argc];             
  15.              if((inf=fopen(input,"r"))==NULL) 
  16.               {//如果某个文件无法打开则跳过   
  17.                  printf("\ncan't open %s\n",input); 
  18.                  continue;                             
  19.               }   
  20.               count++; 
  21.               fileCopy(inf,stdout); 
  22.               fclose(inf); 
  23.          } 
  24.        printf("**Cat %d file**",count);   
  25.        getchar();   
  26.        return 0;   
  27.     } 

要运行这个Cat就再简单不过了,直接Cat或者Cat  f1.c f2.o

感兴趣的可以再这里下载完整的程序。源码下载:

免费下载地址在 http://linux.bkjia.com/

用户名与密码都是www.bkjia.com

具体下载目录在 /2012年资料/10月/26日/C语言模拟Linux中的cat程序

相关内容