题目要求:
1.创建文件file1,写入字符串“abcdefghijklmn”;
2.创建文件file2,写入字符串“ABCDEFGHIJKLMN”;
3.读取file1中的内容,写入file2,使file2中的字符串内容为“abcdefghijklmn ABCDEFGHIJKLMN”
2.创建文件file2,写入字符串“ABCDEFGHIJKLMN”;
3.读取file1中的内容,写入file2,使file2中的字符串内容为“abcdefghijklmn ABCDEFGHIJKLMN”
#include<stdio.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>
#include<unistd.h>
int main()
{
int fp=open("file1",O_RDONLY);
int fq=open("file2",O_RDWR);
char a[15],b[15];
read(fp,a,15);
read(fq,b,15);
lseek(fq,0,SEEK_SET);
write(fq,a,15);
write(fq,b,15);
close(fp);
close(fq);
return 0;
}
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>
#include<unistd.h>
int main()
{
int fp=open("file1",O_RDONLY);
int fq=open("file2",O_RDWR);
char a[15],b[15];
read(fp,a,15);
read(fq,b,15);
lseek(fq,0,SEEK_SET);
write(fq,a,15);
write(fq,b,15);
close(fp);
close(fq);
return 0;
}
所用函数讲解:
1.open
功能
打开或创建一个文件或设备
头文件
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
函数原型
int open(const char *pathname, int flags);
int open(const char *pathname, int flags, mode_t mode);
int creat(const char *pathname, mode_t mode);
返回值
成功时返回新文件描述符
否则返回-1
参数flags:
功能
文件访问模式
取值说明(/usr/include/fcntl.h)
O_RDONLY:只读形式打开
O_WRONLY:只写形式打开
O_RDWR:读写形式打开
O_APPEND:追加模式打开
O_TRUNC :若文件存在且为只读或只写成功打开,则将长度截为0
O_CREAT:若文件不存在则创建之
使用此选项时,需同时说明参数mode,说明文件的存取许可权位
O_EXCL:若同时指定O_CREAT,而文件已经存在,则出错
该参数可测试文件是否存在,如果不存在则创建此文件
creat()函数说明
等价于已参数O_CREAT|O_WRONLY|O_TRUNC执行open()
2.read()
功能
从文件描述符读取数据
头文件
#include <unistd.h>
函数原型
ssize_t read(int fd, void *buf, size_t count);
返回值: 读到的字节数,若已到文件尾为0,若出错为-1
3.write()
功能
将数据写入文件描述符
头文件
#include <unistd.h>
函数原型
ssize_t write(int fd, const void *buf, size_t count);
返回值: 若成功为已写的字节数,若出错为-1
4.lessk()
功能
调节读写的偏移量
头文件
#include <sys/types.h>
#include <unistd.h>
函数原型
off_t lseek(int fildes, off_t offset, int whence);
返回值
成功时返回偏移量位置
否则返回-1
whence说明
SEEK_SET: 从文件头开始的偏移量
SEEK_CUR: 从当前位置开始加offset后的偏移值
SEEK_END: 从文件末开始加offset后的偏移值
功能
文件访问模式
取值说明(/usr/include/fcntl.h)
O_RDONLY:只读形式打开
O_WRONLY:只写形式打开
O_RDWR:读写形式打开
O_APPEND:追加模式打开
O_TRUNC :若文件存在且为只读或只写成功打开,则将长度截为0
O_CREAT:若文件不存在则创建之
使用此选项时,需同时说明参数mode,说明文件的存取许可权位
O_EXCL:若同时指定O_CREAT,而文件已经存在,则出错
该参数可测试文件是否存在,如果不存在则创建此文件
creat()函数说明
等价于已参数O_CREAT|O_WRONLY|O_TRUNC执行open()
2.read()
功能
从文件描述符读取数据
头文件
#include <unistd.h>
函数原型
ssize_t read(int fd, void *buf, size_t count);
返回值: 读到的字节数,若已到文件尾为0,若出错为-1
3.write()
功能
将数据写入文件描述符
头文件
#include <unistd.h>
函数原型
ssize_t write(int fd, const void *buf, size_t count);
返回值: 若成功为已写的字节数,若出错为-1
4.lessk()
功能
调节读写的偏移量
头文件
#include <sys/types.h>
#include <unistd.h>
函数原型
off_t lseek(int fildes, off_t offset, int whence);
返回值
成功时返回偏移量位置
否则返回-1
whence说明
SEEK_SET: 从文件头开始的偏移量
SEEK_CUR: 从当前位置开始加offset后的偏移值
SEEK_END: 从文件末开始加offset后的偏移值