网站怎么做微信推广,徐州网站建设公司百家号,网站建设运营怎么办,一品猪网站开发1. 文件编程函数介绍
如果在Linux系统下学习C语言#xff0c;就会了解到两套文件编程接口函数#xff1a;
C语言标准的文件编程函数: fopen、fread、fwrite、fclose
Linux下提供的文件编程函数: open、read、write、close
传参的区别:
基于文件指针: fopen fclose fread…1. 文件编程函数介绍
如果在Linux系统下学习C语言就会了解到两套文件编程接口函数
C语言标准的文件编程函数: fopen、fread、fwrite、fclose
Linux下提供的文件编程函数: open、read、write、close
传参的区别:
基于文件指针: fopen fclose fread fwrite 比较适合操作普通文件。
基于文件描述符: open close read write 比较适合操作设备文件。
2. C语言标准库提供的文件编程函数
下面介绍C语言标准库提供的文件编程函数一般对文件常用的操作就是创建(打开)、读、写、关闭。
其他的函数用法同理只要把这4个函数学会了基本的文件操作已经可以完成了。
#include
FILE *fopen(const char *path, const char *mode);
函数功能: 打开或者创建文件
函数参数:
const char *path 填文件的路径
const char *mode 填权限。比如: wb rb ab
函数返回值: 文件打开或者创建成功返回对应的文件指针.size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);
函数功能: 读文件
函数参数
void *ptr :读取数据存放的缓冲区。
size_t size :每次读取的大小
size_t nmemb :每次读取的次数
FILE *stream :读取文件
返回值: 读取成功的次数。
比如: fread(buff,1,1000,fp); 从fp文件里读取1000个字节的数据到buff里。size_t fwrite(const void *ptr, size_t size, size_t nmemb,FILE *stream);
函数功能: 写文件
函数参数
void *ptr :将要写入的数据缓冲区首地址。
size_t size :每次写入的大小
size_t nmemb :每次写入的次数
FILE *stream :写入的文件
返回值: 写入成功的次数。
比如: fwrite(buff,1,1000,fp); 向fp文件里写1000个字节的数据数据从buff里获取。int fclose(FILE *fp);
函数功能: 关闭打开的文件。3. Linux下的系统函数: 文件编程函数
Linux下也有一套系统函数用于文件操作这些函数在Linux下常用于读写设备文件当然读写普通文件也是一样普通文件也是磁盘上的数据也是操作块设备驱动。
#include
#include
#include int open(const char *pathname, int flags);
int open(const char *pathname, int flags, mode_t mode);
函数功能: 打开或者创建文件
函数参数:
const char *pathname : 文件的路径
int flags :打开文件的权限. 比如: O_RDONLY O_WRONLY O_RDWR O_CREAT
mode_t mode :创建文件时指定文件本身的权限.比如:S_IRWXU 00700 user (file owner) has read, write and execute permissionS_IRUSR 00400 user has read permissionS_IWUSR 00200 user has write permissionS_IXUSR 00100 user has execute permissionS_IRWXG 00070 group has read, write and execute permissionS_IRGRP 00040 group has read permissionS_IWGRP 00020 group has write permissionS_IXGRP 00010 group has execute permissionS_IRWXO 00007 others have read, write and execute permissionS_IROTH 00004 others have read permissionS_IWOTH 00002 others have write permissionS_IXOTH 00001 others have execute permission
返回值: (返回文件描述符--小整数)文件打开成功值0 否则0
示例: open(123.c,O_RDWR|O_CREAT,S_IRWXU|S_IRWXG|S_IRWXO);
创建一个123.c的新文件并且指定该文件的权限是最高权限. chmod 777 123.c一样ssize_t read(int fd, void *buf, size_t count);
函数功能: 读文件
函数参数:
int fd :文件描述符. ---表示已经打开的文件。
void *buf :读取数据存放的缓冲区.
size_t count :读取字节数量.
返回值: 成功读取的字节数量.ssize_t write(int fd, const void *buf, size_t count);
函数功能: 写文件
函数参数:
int fd :文件描述符. ---表示已经打开的文件。
void *buf :将要写入到文件的数缓冲区首地址.
size_t count :写入的字节数量.
返回值: 成功写入的字节数量.int close(int fd);
函数功能: 关闭已经打开的文件.4. 案例: 实现文件拷贝功能(fopen)
例如: cp 123.c 456.c 将123.c的数据拷贝到456.c文件里。
注意: 下面这个代码需要在命令行上运行需要给main函数传参。如果是在windows下IED软件里运行可以将传参代码屏蔽掉改成让用户输入或者直接把参数固定也可以。
#include
//实现: cp 123.c 456.c
int main(int argc,char **argv)
{if(argc!3){printf(参数: ./a.out 源文件 目标文件\n);return 0;}/*1. 打开源文件*/FILE *src_fpfopen(argv[1],rb);if(src_fpNULL){printf(%s 文件打开失败.\n,argv[1]);return -1;}/*2. 创建新文件*/FILE *new_fpfopen(argv[2],wb);if(new_fpNULL){printf(%s 文件创建失败.\n,argv[2]);fclose(src_fp);return -2;}/*3. 实现文件的拷贝*/unsigned char buff[1024];unsigned int cnt;while(1){cntfread(buff,1,1024,src_fp);fwrite(buff,1,cnt,new_fp);if(cnt!1024)break;}/*4. 关闭文件*/fclose(new_fp);fclose(src_fp);return 0;
}5. 案例: 实现文件拷贝功能(open)
例如: cp 123.c 456.c 将123.c的数据拷贝到456.c文件里。
#include
#include
#include
#include //实现: cp 123.c 456.c
int main(int argc,char **argv)
{if(argc!3){printf(参数: ./a.out 源文件 目标文件\n);return 0;}/*1. 打开源文件*/int fd_srcopen(argv[1],O_RDONLY);if(fd_src0){printf(源文件打开失败.\n);return -1;}/*2. 创建新文件*/int fd_newopen(argv[2],O_WRONLY|O_CREAT,S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH);if(fd_new0){printf(新文件创建失败.\n);close(fd_src);return -2;}/*3. 拷贝文件*/unsigned char buff[1024];int cnt;while(1){cntread(fd_src,buff,1024);write(fd_new,buff,cnt);if(cnt!1024)break;}/*4. 关闭文件*/close(fd_src);close(fd_new);return 0;
}