#include "./common/head.h"
int main(int argc, char *argv[])
{
if(argc != 2){
printf("usage: cmd fileName\n");
return 1;
}
FILE *fp = fopen(argv[1], "r"); //以只读方式打开文件
if(!fp){
perror("fopen");
exit(1);
}
//只要没读到文件末尾EOF(-1),就一直读
while( (c = fgetc(fp)) != EOF ){ //等价于 while( ~(c = fgetc(fp)) ),当读到文件末尾EOF为-1时,即c这时候的值为255,按位取反就是0,跳出循环
//注意:(c = fgetc(fp))的括号不能省略,因为赋值运算符最后才被执行
//fgetc函数每执行一次,文件指针就会后移一个字符
//在这里向屏幕打印出读到的字符,实现类似cat的功能
printf("%c", c); //write(STDOUT_FILENO, &c, 1);
}
fclose(fp);
return 0;
}
终端:
$gcc mycat.c -o mycat
$ which cat
/bin/cat
$mv mycat /bin
$mycat mycat.c