栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

文件操作小应用

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

文件操作小应用

文件操作小应用

文章目录
  • 文件操作小应用
    • 小项目之实现cp指令
    • 实现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

#include 

int 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岁
职业:企业培训老师
婚姻状况:已婚
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/629314.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号