学习新手,写的是学习的笔记
一、先写一个简单的文件cp命令
1、先创建一个文件夹,放置自己写的文件命令mkdir my_cp
切换到my_cp文件夹下
vim 1.txt 创建1.txt文件
里面写入内容HELLO,再ESC :wq保存退出。
2、创建vim my_cp.c文件,里面写可以把1.txt文本复制到2.txt文本的命令
3、再gcc编译刚刚写好的c文件,因为没有安装gcc,所以需要先安装 sudo apt install gcc
安装好gcc后,再编译 gcc my_cp.c
gcc my_cp.c:这条命令使用GCC编译器(GNU Compiler Collection)来编译名为my_cp.c的C语言源文件。如果源文件没有错误,GCC将生成一个名为a.out的可执行文件。
ls:这是一个列出当前目录中文件的命令。在这个上下文中,它应该显示刚刚由GCC编译器生成的可执行文件a.out。
./a.out:这条命令用于执行刚刚由GCC编译器生成的可执行文件a.out。如果my_cp.c中的C代码没有语法错误,并且程序逻辑正确,那么a.out将运行并执行C代码中的指令,完成把1.txt的内容复制到2.txt文本中。
ls 再次查看,看到复制出现的2.txt文本
cat 2.txt 这个命令会显示文件2.txt的内容并在终端上显示出来。如果文件不存在,你将看到一个错误消息。,可以看到1.txt里面的内容被完整复制到2.txt中
二、活的cp命令文件,可以实现
vim my_cp.c
#include <stdio.h>
int main(int argc , char *argv[])
{
char buff[1024]={0};
FILE *fp1 = fopen(argv[1],"r");
if (fp1==NULL){
perror("Error opening input file");
return -1;
}
FILE *fp2 = fopen(argv[2],"w");
if(fp2==NULL){
perror("Error opening output file");
fclose(fp1);
return -1;
}
while(1)
{
int fr = fread(buff,1,1024,fp1);
if(fr==0)
{
break;
}
fwrite(buff,1,fr,fp2);
}
fclose(fp1);
fclose(fp2);
return 0;
}
运行结果截图:
最后写了一个有复制功能的文件命令出来