cat指令输出

问题

UNIX下有一个命令cat,其用法为:
  cat x.c y.c z.c …

其在标准输出(屏幕)上依次显示每个文件内容。如果没有文件名,则显示标准输入中的内容,它类似于Windows的Command环境下的type命令。

算法设计

主要算法如下:
  If 没有命令行参数
    从标准输入中读取内容并显示到屏幕上;
  Else
    While 还有文件未读取
      打开文件;
        从文件输入中读取内容并显示到屏幕上;
        关闭文件;

算法实现

#include 
#include    //exit(1)在该文件中
void fileCopy(FILE *fp);

int main(int argc,char **argv)
{
    FILE *fp;
	int i=1;     //从第二个参数开始输出,第一个为程序路径+名称  

    if(argc == 1){
	   fileCopy(stdin);      //如果没有参数,则输入什么输出什么
	}else{
		while( i<argc){
			if((fp=fopen(argv[i],"r")) == NULL){
				fprintf(stderr,"cat: can't open %s\n",*(argv+i));
				exit(1);
			}else{
		    	fileCopy(fp);
		    	fclose(fp);
			}
			i++;
		}
	}
    
	exit(0);
}
void fileCopy(FILE *fp){
   int c;
//   while((c=fgetc(fp)) != EOF)
//	   fputc(c,stdout);
   //最好使用如下代码,对于二进制文件不可以使用EOF(-1)来判断读取结束(最后一个byte的后一个位置)
   while(!feof(fp)){
      c = fgetc(fp);
	  fputc(c,stdout);
   }
}

程序执行结果如下:
cat指令输出_第1张图片

你可能感兴趣的:(#,算法基础实例)