概述
问题1:利用读写特性,write写入某个数据之后,将其read读取出来
- WR.c 源代码
//打开文件
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
//读写,关闭
#include <unistd.h>
//打开文件
int openFile(const char* filePath);
//读取文件
void readFile(int fd);
//写入数据
int writeFile(int fd, char* str);
//将光标移到起始位置
int backToStart(int fd);
//写入数据并读取数据
int WRFile(const char* filePath, const char* dataSource);
int main(void){
//写入数据并读取
WRFile("1.txt", "this is a test data");
return 0;
}
//打开文件
int openFile(const char* filePath){
printf("正在打开%s文件····nn",filePath);
int fd = open(filePath, O_RDWR);
if(fd == -1){
perror("打开失败!nn");
return -1;
}
printf("打开成功 !nn");
return fd;
}
//读取文件
void readFile(int fd){
char c[2] = {0};
int flag = 1;
printf("正在读取····nn");
do{
flag = read(fd, c, sizeof(c)-1);
if(flag > 0){
printf("%s", c);
}
}while(flag);
printf("nn读取成功 !nn");
}
//写入数据
int writeFile(int fd, char* str){
printf("正在写入····nn");
printf("%snn",str);
int w = write(fd, str, strlen(str));
printf("写入成功 !nn");
return w;
}
//将光标移到起始位置
int backToStart(int fd){
return lseek(fd, 0, SEEK_SET);
}
//写入数据并读取数据
int WRFile(const char* filePath, const char* dataSource){
//打开文件
int fd = openFile(filePath);
//写入数据
writeFile(fd,dataSource);
//将光标移到起始位置
backToStart(fd);
//读取文件到屏幕
readFile(fd);
close(fd);
}
- 编译代码
even@ubuntu:~/Desktop/shared/day05$ ls
1.txt
2.txt
CopyFile.c
WR.c
even@ubuntu:~/Desktop/shared/day05$ gcc WR.c -o main1
- 测试
even@ubuntu:~/Desktop/shared/day05$ ./main1
正在打开1.txt文件····
打开成功 !
正在写入····
this is a test data
写入成功 !
正在读取····
this is a test data
读取成功 !
even@ubuntu:~/Desktop/shared/day05$
- 查看
1.txt
文件内容
this is a test data
问题2:实现复制功能,将文件1的数据复制到文件2中
- CopyFile.c 源代码
//打开文件
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
//读写,关闭
#include <unistd.h>
//打开文件
int openFile(const char* filePath);
//得到文件大小
int getFileSize(int fd);
//拷贝文件1到文件2
int copyFile(const char* sourceFile, const char* targetFile);
int main(void){
//将1.txt文件内容拷贝到2.txt文件
copyFile("1.txt","2.txt");
return 0;
}
//打开文件
int openFile(const char* filePath){
printf("正在打开%s文件····nn",filePath);
int fd = open(filePath, O_RDWR);
if(fd == -1){
perror("打开失败!nn");
return -1;
}
printf("打开成功 !nn");
return fd;
}
//得到文件大小
int getFileSize(int fd){
//得到文件大小
int size = lseek(fd, 0, SEEK_END);
lseek(fd, 0, SEEK_SET);
return size;
}
//拷贝文件1到文件2
int copyFile(const char* sourceFile, const char* targetFile){
//打开源文件和目标文件
int sourFD = openFile(sourceFile);
int targFD = openFile(targetFile);
//暂存数据
int fileSize = getFileSize(sourFD) + 1;
char str[fileSize];
printf("正在读取数据源··· nn");
//读取数据
read(sourFD, str, sizeof(str));
printf("%snn",str);
printf("读取成功 !nn");
printf("正在写入目标源··· nn");
//写入目标源
printf("%snn",str);
write(targFD, str, strlen(str));
printf("写入成功 !nn");
//关闭
close(sourFD);
close(targFD);
}
- 编译代码
even@ubuntu:~/Desktop/shared/day05$ ls
1.txt
2.txt
CopyFile.c
main1
WR.c
even@ubuntu:~/Desktop/shared/day05$ gcc CopyFile.c -o main2
even@ubuntu:~/Desktop/shared/day05$
- 测试
even@ubuntu:~/Desktop/shared/day05$ ./main2
正在打开1.txt文件····
打开成功 !
正在打开2.txt文件····
打开成功 !
正在读取数据源···
this is a test data
读取成功 !
正在写入目标源···
this is a test data
写入成功 !
even@ubuntu:~/Desktop/shared/day05$
- 查看
1.txt
文件内容
this is a test data
- 查看
2.txt
文件内容
this is a test data
参考文档
最后
以上就是小巧樱桃为你收集整理的Linux——open函数、read函数、write函数简单封装使用的全部内容,希望文章能够帮你解决Linux——open函数、read函数、write函数简单封装使用所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复