cat指令输出
原创
©著作权归作者所有:来自51CTO博客作者不死鸟jgc的原创作品,请联系作者获取转载授权,否则将追究法律责任
问题
UNIX下有一个命令cat,其用法为:
cat x.c y.c z.c …
其在标准输出(屏幕)上依次显示每个文件内容。如果没有文件名,则显示标准输入中的内容,它类似于Windows的Command环境下的type命令。
算法设计
主要算法如下:
If 没有命令行参数
从标准输入中读取内容并显示到屏幕上;
Else
While 还有文件未读取
打开文件;
从文件输入中读取内容并显示到屏幕上;
关闭文件;
算法实现
#include <stdio.h>
#include <stdlib.h>//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);
}
}
程序执行结果如下: