一、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;
}