发布时间:2014-09-05 17:45:10作者:知识屋
1. Linux系统调用,文件的描述符使用的是一个整数,库函数访问文件使用FILE类型的指针去指向描述文件;
2. 库函数不随系统平台而变,即不管win还是Linux都适用;
库函数 - 读文件
size_t fread(void *ptr, size_t size, size_t n, FILE *stream)
功能:从stream指向的文件中读取n个字段,每个字段为size字节,并将读取的数据放入ptr所指向的字符数组中,返回实际已读取的字节数。(读出来的数据量为size*n)
库函数 - 写文件
size_t fwrite(const void *ptr, size_t size, size_t n, FILE *stream)
功能:从缓冲区ptr所指向的数组中把n个字段写到stream指向的文件中,每个字段长为size个字节,返回实际写入的字段数。
库函数 - 创建和打开
FILE *fopen(const char *filename, const char *mode)
filename:打开的文件名(包含路径,缺省为当前路径)
mode:打开模式
实例代码
root@wl-MS-7673:/home/wl/桌面/c++# cat -n file_lib_copy.cpp 1 2 #include <stdio.h> 3 #include <string.h> 4 #include <stdlib.h> 5 #define BUFFER_SIZE 1024 6 7 /* 8 * 程序入口 9 * */ 10 int main(int argc,char **argv) 11 { 12 FILE *from_fd; 13 FILE *to_fd; 14 long file_len=0; 15 char buffer[BUFFER_SIZE]; 16 char *ptr; 17 18 /*判断入参*/ 19 if(argc!=3) 20 { 21 printf("Usage:%s fromfile tofile/n",argv[0]); 22 exit(1); 23 } 24 25 /* 打开源文件 */ 26 if((from_fd=fopen(argv[1],"rb"))==NULL) 27 { 28 printf("Open %s Error/n",argv[1]); 29 exit(1); 30 } 31 32 /* 创建目的文件 */ 33 if((to_fd=fopen(argv[2],"wb"))==NULL) 34 { 35 printf("Open %s Error/n",argv[2]); 36 exit(1); 37 } 38 39 /*测得文件大小*/ 40 fseek(from_fd,0L,SEEK_END); 41 file_len=ftell(from_fd); 42 fseek(from_fd,0L,SEEK_SET); 43 printf("form file size is=%d/n",file_len); 44 45 /*进行文件拷贝*/ 46 while(!feof(from_fd)) 47 { 48 fread(buffer,BUFFER_SIZE,1,from_fd); 49 if(BUFFER_SIZE>=file_len) 50 { 51 fwrite(buffer,file_len,1,to_fd); 52 } 53 else 54 { 55 fwrite(buffer,BUFFER_SIZE,1,to_fd); 56 file_len=file_len-BUFFER_SIZE; 57 } 58 bzero(buffer,BUFFER_SIZE); 59 } 60 fclose(from_fd); 61 fclose(to_fd); 62 exit(0); 63 } 64 65 root@wl-MS-7673:/home/wl/桌面/c++# g++ file_lib_copy.cpp -o file_lib_copyfile_lib_copy.cpp: 在函数‘int main(int, char**)’中:file_lib_copy.cpp:43:41: 警告: 格式 ‘%d’ expects argument of type ‘int’, but argument 2 has type ‘long int’ [-Wformat]root@wl-MS-7673:/home/wl/桌面/c++# ./file_lib_copy file_lib_copy.cpp test2.cform file size is=1030root@wl-MS-7673:/home/wl/桌面/c++#
linux一键安装web环境全攻略 在linux系统中怎么一键安装web环境方法
Linux网络基本网络配置方法介绍 如何配置Linux系统的网络方法
Linux下DNS服务器搭建详解 Linux下搭建DNS服务器和配置文件
对Linux进行详细的性能监控的方法 Linux 系统性能监控命令详解
linux系统root密码忘了怎么办 linux忘记root密码后找回密码的方法
Linux基本命令有哪些 Linux系统常用操作命令有哪些
Linux必学的网络操作命令 linux网络操作相关命令汇总
linux系统从入侵到提权的详细过程 linux入侵提权服务器方法技巧
linux系统怎么用命令切换用户登录 Linux切换用户的命令是什么
在linux中添加普通新用户登录 如何在Linux中添加一个新的用户
2012-07-10
CentOS 6.3安装(详细图解教程)
Linux怎么查看网卡驱动?Linux下查看网卡的驱动程序
centos修改主机名命令
Ubuntu或UbuntuKyKin14.04Unity桌面风格与Gnome桌面风格的切换
FEDORA 17中设置TIGERVNC远程访问
StartOS 5.0相关介绍,新型的Linux系统!
解决vSphere Client登录linux版vCenter失败
LINUX最新提权 Exploits Linux Kernel <= 2.6.37
nginx在网站中的7层转发功能