C++文件操作常用函数

C++文件操作常用函数

fopen

fclose

ftell

fread

fseek

 

fopen
功能:打开文件

定义函数 : FILE * fopen(const char * path,const char * mode);
输入参数: path字符串包含欲打开的文件路径及文件名

           mode字符串则代表着流模式。常见模式为r(只读),r+(可读写),w(只写),w+(可读写)

          注:1. mode字符串都可以再加一个b字符,如rb、w+b或ab+等组合,加入b字符代表打开的文件为       二进制文件。 2.使用此函数必须保证欲打开文件存在,否则输出返回错误。

返回参数:  文件顺利打开后,返回指向该流的文件指针。

            文件打开失败返回NULL,并把错误代码存在errno中。

范例

#include<stdio.h>
main()
{
FILE * fp;
char const* fileName="D:\readme.ts";
fp= fopen( fileName, "rb" );
if(fp= =NULL) return;
fclose(fp);
}



.fprintf
功能:传送格式化输出到一个文件中
函数原型:int fprintf(FILE *stream,char *format[, argument,...]);
输入参数:FILE* 一个FILE型的指针
          char*格式化输入函数,和printf里的格式一样
返回参数:成功时返回转换的字节数,失败时返回一个负数

举例:
fp =fopen("/local/test.c","a+");
fprintf(fp,"%s\n",str);
 fscanf
功能:从一个流中执行格式化输入

函数原型:intfscanf(FILE *stream, char *format[,argument...]);
输入参数:FILE* 一个FILE型的指针

       char* 格式化输出函数,和scanf里的格式一样
返回参数:成功则返回转换的字节数,

          失败则返回一个负数

范例:

fp =fopen("/local/test.c","a+");
fscanf(fp,"%s",str);

fclose

功能:关闭文件
定义函数 int fclose(FILE *stream);
输入参数:FILE * stream 打开的文件流

返回参数: 成功则返回0,

           失败返回EOF并把错误代码存到errno。
范例

  参考fopen()。

fseek

功能:移动文件流的读写位置

定义函数int fseek(FILE * stream,long offset,int whence);
输入参数   stream为已打开的文件指针

           offset为根据参数whence来移动读写位置的位移数。
          whence为下列其中一种:
          SEEK_SET从距文件开头offset位移量为新的读写位置。

          SEEK_CUR 以目前的读写位置往后增加offset个位移量。
          SEEK_END将读写位置指向文件尾后再增加offset个位移量。
         当whence值为SEEK_CUR或SEEK_END时,参数offset允许负值的出现。
        下列是较特别的使用方式:
         1) 欲将读写位置移动到文件开头时:fseek(FILE*stream,0,SEEK_SET);
         2)
欲将读写位置移动到文件尾时:fseek(FILE *stream,0,0SEEK_END);
返回值   当调用成功时则返回0,若有错误则返回-1,errno会存放错误代码。
附加说明 fseek()不像lseek()会返回读写位置,因此必须使用ftell()来取得目前读写的位置。
范例

#include<stdio.h>
main()
{
FILE * stream;
long offset;
fpos_t pos;
stream=fopen(“/etc/passwd”,”r”);
fseek(stream,5,SEEK_SET);
printf(“offset=%d/n”,ftell(stream));
rewind(stream);
fgetpos(stream,&pos);
printf(“offset=%d/n”,pos);
pos=10;
fsetpos(stream,&pos);
printf(“offset = %d/n”,ftell(stream));
fclose(stream);
}
执行 offset = 5
offset =0
offset=10
 


ftell
功能:取得文件流的读取位置
定义函数 long ftell(FILE *stream);
输入参数 stream为已打开的文件指针。
返回值   成功时则返回目前的读写位置

                错误则返回-1,errno会存放错误代码。
错误代码 EBADF 参数stream无效或可移动读写位置的文件流。
范例 参考fseek()。
 

fwrite

功能:将数据写至文件流
定义函数 size_t fwrite(const void* ptr,size_t size,size_t nmemb,FILE * stream);
输入参数    stream为已打开的文件指针,

                    参数ptr 指向欲写入的数据地址,总共写入的字符数以参数size*nmemb来决定

返回值    实际写入的nmemb数目。
范例 

#include<stdio.h>
#define set_s (x,y) {strcoy(s[x].name,y);s[x].size=strlen(y);}
#define nmemb 3
struct test
{
char name[20];
int size;
}s[nmemb];
main()
{
FILE * stream;
set_s(0,”Linux!”);
set_s(1,”FreeBSD!”);
set_s(2,”Windows2000.”);
stream=fopen(“/tmp/fwrite”,”w”);
fwrite(s,sizeof(struct test),nmemb,stream);
fclose(stream);
}


执行 参考fread()。

fread

作用:从文件中读入数据到指定的地址中

函数原型:size_tfread(void* buff,size_t size,size_t count,FILE*)

输入参数:第一个参数buff为接收数据的指针(buff),也即数据存储的地址

                    第二个参数size为单个元素的大小,即由指针写入地址的数据大小,注意单位是字节

                    第三个参数count为元素个数,即要读取的数据大小为size的元素个素

                     第四个参数stream 为提供数据的文件指针,该指针指向文件内部数据

返回值:读取的总数据元素个数

范例:

int num,count;

int*pr=new int[num*count];

fread(pr,num*4, count, stream);   // stream为fopen中返回的FILE指针

要将数据写入pr中,必须为pr分配内存,一个int为4个字节,所以要x4

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值