【Linux篇】cp指令、cat指令、修改配置文件的实现

一、cp指令 

步骤:

1.打开src.c

2.读src.c到buf

3.打开/创建des.c

4.将buf写入到des.c

5.关闭两个文件

#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <string.h>
#include <stdlib.h>

int main(int argc,char **argv)
{
	int fdSrc;
	int fdDes;
	char *readBuf = NULL;

	if(argc != 3){  //判断参数是否为3个
		printf("param error\n");
		exit(-1);
	}
	fdSrc = open(argv[1],O_RDWR);//打开源文件
	int size = lseek(fdSrc,0,SEEK_END);//计算源文件大小
	lseek(fdSrc,0,SEEK_SET);
	readBuf = (char *)malloc(sizeof(char)*size+8);//开辟一个新的readBuf
	int n_read = read(fdSrc,readBuf,size);//读源文件到readBuf
	fdDes = open(argv[2],O_RDWR|O_CREAT|O_TRUNC,0600);//打开/创建目标文件
	int n_write = write(fdDes,readBuf,strlen(readBuf));//将readBuf写入到目标文件

	close(fdSrc);//关闭源文件
	close(fdDes);//关闭目标文件

	return 0;
}

 

二、cat指令

#include <stdio.h>
//cat指令实现
int main(int argc,char *argv[])
{
	FILE *fp;
	int nRet = 0;

	if(argc != 2)
	{
		printf("error\n");
		return -1;
	}
	fp = fopen(argv[1],"r");
	if(fp == NULL)//判断文件是否打开
	{
		printf("open file failed!\n");
		return -2;
	}
	while(1)
	{
		nRet = fgetc(fp);//读取文件数据
		if(feof(fp))//判断文件是否已经结束
		{
			break;
		}
		fputc(nRet,stdout);//把读取文件写入内核空间
	}
	fclose(fp);

	return 0;
}

 

三、修改程序配置文件

#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <string.h>
#include <stdlib.h>

int main(int argc,char **argv)
{
	int fdSrc;
	char *readBuf = NULL;

	if(argc != 2){
		printf("param error\n");
		exit(-1);
	}
	fdSrc = open(argv[1],O_RDWR);
	int size = lseek(fdSrc,0,SEEK_END);
	lseek(fdSrc,0,SEEK_SET);
	readBuf = (char *)malloc(sizeof(char)*size+8);
	int n_read = read(fdSrc,readBuf,size);
	char *p = strstr(readBuf,"LENG=");//找到要修改的字符
	if(p == NULL){//判断是否找到
		printf("not found\n");
		exit(-1);
	}
	p = p+strlen("LENG=");//移动指针
	*p = '5';//修改数值
	lseek(fdSrc,0,SEEK_SET);//在写入前,将光标移到文件头
	int n_write = write(fdSrc,readBuf,strlen(readBuf));

	close(fdSrc);

	return 0;
}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序猿gao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值