- 文件操作小应用
- 小项目之实现cp指令
- 实现cp指令代码:
- 小项目之文件内容的修改
指令:
vimdiff
使用 vimdiff 命令可以比较两个文件的差异,不同的地方高亮显示
1、C语言参数
cp src.c des.c
./a.out src.c des.c
./a.out 原文件 目标文件
argc表示参数个数
argv礪表示参数是谁
举例子:
./a.out src.c des.c 中有三个参数
第一个参数是:./a.out src.c des.c
第二个参数是:src.c
第三个参数是: des.c
#includeint main(int argc,char **argv) { printf("总共有%d个参数n",argc); printf("第一个参数是:%sn",argv[0]); printf("第二个参数是:%sn",argv[1]); printf("第三个参数是:%sn",argv[2]); return 0; }
测试结果:
实现cp指令代码:#include#include #include #include #include #include #include int main(int argc,char **argv) { int fdSrc; int fdDes; char *buf=(char *)malloc(sizeof(char)*128); if(argc != 3){ printf("输入错误n"); exit(-1); } fdSrc=open(argv[1],O_RDWR); int file_size=lseek(fdSrc,0,SEEK_END); lseek(fdSrc,0,SEEK_SET); buf=(char *)malloc(sizeof(char)*file_size+8); read(fdSrc,buf,file_size); fdDes=open(argv[2],O_RDWR|O_CREAT|O_TRUNC,0600); write(fdDes,buf,strlen(buf)); close(fdSrc); close(fdDes); return 0; }
测试结果:
[root@xiuxiu File]# gcc demo11.c -o mycp [root@xiuxiu File]# ./mycp demo11.c new.c [root@xiuxiu File]# cat new.c #include小项目之文件内容的修改#include #include #include #include #include #include int main(int argc,char **argv) { int fdSrc; int fdDes; char *buf=(char *)malloc(sizeof(char)*128); if(argc != 3){ printf("输入错误n"); exit(-1); } fdSrc=open(argv[1],O_RDWR); int file_size=lseek(fdSrc,0,SEEK_END); lseek(fdSrc,0,SEEK_SET); buf=(char *)malloc(sizeof(char)*file_size+8); read(fdSrc,buf,file_size); fdDes=open(argv[2],O_RDWR|O_CREAT|O_TRUNC,0600); write(fdDes,buf,strlen(buf)); close(fdSrc); close(fdDes); return 0; } [root@xiuxiu File]#
#include#include #include #include #include #include #include int main(int argc,char **argv) { int fdSrc; int fdDes; char *buf=(char *)malloc(sizeof(char)*128); if(argc != 2){ printf("输入错误n"); exit(-1); } fdSrc=open(argv[1],O_RDWR); int file_size=lseek(fdSrc,0,SEEK_END); lseek(fdSrc,0,SEEK_SET); buf=(char *)malloc(sizeof(char)*file_size+8); read(fdSrc,buf,file_size); char *p =strstr(buf,"年龄:"); if(p==NULL){ printf("没有找到该字符n"); exit(-1); } char p2[]="33"; p=p+strlen("年龄:"); for(int i=1;i<=strlen(p2);i++){ *p=*p2; p=p+i; } close(fdSrc); //重新打开文件,使用O_TRUNC,把原来的内容完全覆盖掉 fdDes=open(argv[1],O_RDWR|O_TRUNC,0600); write(fdDes,buf,strlen(buf)); close(fdDes); return 0; }
测试文件:
姓名:陈立臣 年龄:54岁 职业:企业培训老师 婚姻状况:已婚
测试结果:
姓名:陈立臣 年龄:33岁 职业:企业培训老师 婚姻状况:已婚



