几个C/C++语言文件读写函数

1、打开和关闭文件

  (1)打开文件:FILE * fopen(const char *filename, const char *mode)

  在使用打开文件函数时,我们要提供一个要打开的文件名,这里要提供一个当前用户有权限进行相应mode操作的文件,且应该提供相对应的文件路径(默认路径为当前文件夹)。打开方式mode有很多种,大概有如下几种模式(参考自百度百科的参数介绍,因为我暂时看的这本书没有详细参数介绍,只给出了几种,连接:http://baike.baidu.com/link?url=ZOtXcWvvy4pfUVm37V9GaHymKEKZKxIxMjeTcxSlTxKMcEmx1ZW_MiTH1myZUcG_):

  r:以只读方式打开文件,采用文本模式,文件必须存在

  rb:以只读方式打开文件,采用二进制模式,文件必须存在

  r+:以可读写方式打开文件,采用文本格式,文件必须存在

  r+b:以可读写方式打开文件,采用二进制模式,文件必须存在;(codeblcoks环境使用GCC编译器验证,原百度百科未说明)

  w:以只写方式打开文件,采用文本模式,若文件存在则文件清零,若文件不存在则创立该文件;

  wb:以只写方式打开文件,采用二进制模式,同上;

  w+:以读写方式打开文件,若文件存在则长度清零,若文件不存在则建立该文件。

  w+b:以读写方式打开二进制文件,同上;

  a:以附加方式打开文本文件,只可写,若文件不存在则会创建文件;若文件存在,则会将新内容添加到文件末尾,原文件中内容保留;

  ab:以附加方式打开二进制文件,同上;

  a+:以附加方式打开可读写文本文件,同上;

  a+b:以附加方式打开可读写二进制文件,同上;

  rw+:以读写方式打开一个文本文件;

  其中,r+的读写方式都在文件开头,写入操作会覆盖之前的内容,而w+在文件存在时会创建新文件覆盖之,再写入内容,二a+是从文件末尾开始添加内容。

  (2)关闭文件:int fclose (FILE* stream)

  每个文件打开后都要注意在程序执行的所有可能路径上关闭该文件,因为一个程序所能打开的文件数目是有限的,这点要注意!

2、fscanf和fprintf读写文件

  函数原型如下:

  int fscanf (FILE *stream, const char *format[, address, ...]);

  int fprintf (FILE *stream, const char *format[, address, ...]);

  两个函数的用法类似C/C++中的scanf和printf,只不过所面向的流对象为文件流,同时,fscanf在读到文件末尾时会返回EOF(End of file),是一个stdio.h中的内置常量。

3、fgetc和fputc读写文件

  函数原型如下:

  int fgetc(FILE *stream);

  int fputc(int c, FILE *stream);

  使用fgetc读取为文件内容,每次仅读取一个字节的文件,当读到文件末尾时,会返回EOF值;

  fputc会将一个字节的数据写入文件,c是要写入的数据,虽然是int型,但是只有低8位会被写入文件,写入失败会返回EOF值

4、fgets和fputs读写文件

  函数原型如下:

  char *fgets (char *s,  int n, FILE *stream);

  int fputs (const char*s, FILE *stream);

  fgets每运行一次,会读取一行数据,包括换行符,放入s中,并加上相应的结尾标志符‘\0’,参数n代表s中最多容纳的字符数(不算‘\0’);而返回的指针和s指向同一内存区域,如果没有数据可以读取,则返回NULL;

  fputs函数向文件流中写入字符串s,但写完s后并不会自动向文件中写入换行符。

5、fread和fwrite读写文件

  函数原型如下:

  unsigned fread (void *ptr, unsigned size, unsigned n, FILE *stream);

  unsigned fwrite (const void *ptr, unsigned size, unsigned n, FILE *stream);

  fread 函数从文件中读取n个大小为size字节的数据块,放入ptr开始的内存中,返回值为读取的字节数,若一个字节也未读取,返回值为0;

  fwrite函数将从地址ptr开始的n*size个字节的内容写入到文件中,返回值表示成功写入的字节数。

  需要注意的一点就是,fread和fwrite函数读写文件,文件必须用二进制方式打开

6、fseek改变文件当前位置

  函数原型如下:

  int fseek (FILE *stream, long offset, int whence);

  作用:函数将与stream关联的文件的“当前位置”设为距whence处offset字节的地方。whence可以有一下三种取值:

  SEEK_SET:文件开头;

  SEEK_CUR:执行本函数前文件的当前位置;

  SEEK_END:文件末尾;

  例如:

  fseek(fp, 200, SEEK_SET);// 将文件当前位置设为距离文件开始位置为200个字节处

  程序示例:

  fread (aStu, sizeof (Student), 7, fpSrc);  // 读取7*sizeof(Student)字节大小数据

  fseek (fpSrc, sizeof (Student) * 20, SEEK_SET);  // 将文件当前位置设为距离开始位置为sizeof(Student)*20个字节处

今天先写到这,还看了一个设计模式和两道简单的ACM题目,有时间会放到博客!

posted @ 2014-03-12 21:07  胖子特大号  阅读(4607)  评论(0编辑  收藏  举报