《C primer plus》——文件输入/输出

访问文件的途径:二进制模式文本模式

I/O级别:底层I/O标准高级I/0

C程序自动打开的文件:标准输入(standard input)-stdin、标准输出(standard output)-stdout、标准错误输出(standard error output)-stderr

  • fopen():

第一个参数为待打开文件名,第二个参数为指定待打开文件的模式的字符串。成功打开文件后,函数返回文件指针(file pointer)
  “r”:读模式打开文件
   “w”:写模式打开文件,把现有文件的长度截为0,若文件不存在,则创建一个新文件
   “a”:写模式打开文件,在现有文件末尾添加内容,若文件不存在,则创建一个新文件
   “r+”:更新模式打开文件(即可以读写文件
   “w+”:更新模式打开文件,把现有长度截为0,若文件不存在,则创建一个新文件
   “a+”:更新模式打开文件,在现有文件末尾添加内容,若文件不存在,则创建一个新文件,可以读整个文件,但是只能在末尾添加内容
   “rb”、“wb”、“ab”、“rb+”、“wb+”、“ab+”、“a+b”、“r+b”、“w+b”:与上述模式类似,但是是以二进制模式打开文件。
   “wx”、“wbx”、“w+x”、“wb+x”、“w+bx”:类似非x模式,但是如果文件已存在或者以独占模式打开文件,则打开文件失败,如果用x的写模式,会返回错误,但是不会将文件长度截为0;另外x模式的独占特性,使得其他程序或者线程无法访问正在被打开的文件。

  • fclose():

关闭指定的文件,必要时刷新缓存区。

  • getc()与putc():

ch=getc(fp)意思为从fp中获得一个字符;putc(ch,fpout)意思为把字符ch放入FIFE指针fpout指定文件中,第一个参数是待写入的字符,第二个参数是文件指针。

  • fseek():

第一个参数为FILE指针,指向带查找的文件。第二个参数是偏移量(offset),改参数必须是一个long类型的值。第三个参数是模式,在stdio.h中规定了几个表示模式的明示常量(manifest constant),比如SEEK_SET(文件开始处),SEEK_CUR(当前位置),SEEK_END(文件末尾)。

  • ftell():

返回值类型long,返回的是参数指向文件的当前位置距文件开始处的字节数

  • fgetpos()与fsetpos():

返回值类型为fpos_t(file position type,文件定位类型),它不是基本类型,不能是数组类型。fgetpos(FILE *restrict stream , fpos_t *restrict pos)fpos_t类型的值表示为当前位置距文件开头的字节数。fsetpos(FILE *stream , const fpos_t *pos),fpos_t类型的值来设置文件指针指向偏移该值后指定的位置。

  • 其他标准I/0函数
    1.int ungetc(int c, FILE *fp);
       把c指定的字符放回输入流中。
    2.int fflush(FILE *fp);
       调用fflush函数引起输出缓冲区中所有的未写入数据被发送到fp指定的输出文件,这个过程称为 刷新缓冲区。如果fp为空指针,则刷新所有输出缓冲区。
    3.int setvbuf(FILE *restrict fp, char *restrict buf, int mode , size_t size);
       setvbuf函数创建了一个供标准I/O函数替换使用的缓冲区。在打开文件后且尚未对流进行其他操作之前,调用该函数。指针fp识别待处理流,buf指向待使用的存储区,变量size告诉setvbuf数组大小,mode的选择有:_IOFBF(完全缓冲:在缓冲区满时刷新),_IOLBF(在缓冲区满时或写入一个换行符时),_IONBF(无缓冲)。
    4.size_t fwrite(const void *restrict ptr, size_t size, size_t nmemb,FILA *restrict fp);
       fwrite把二进制数据写入文件。指针ptr是待写入数据块的地址,size表示待写入数据块的字节大小,nmemb表示待写入数据块的数量,fp指定待写入的文件。正常情况下,函数返回值是nmemb的值。
    5.size_t fread(void *restrict ptr, size_t size, size_t nmemb, FILE *restrict fp);
       fread用于读取被fwrite写入文件的数据。指针ptr是待读取文件数据的地址,size表示待读取数据块的字节大小,nmemb表示待读取数据块的数量,fp指定待读取的文件。
    6.int feof(FILE *fp)和int ferror(FILE *fp)
      当上一次输入调用检测到文件结尾时,feof返回一个非零值,否则返回零;当读或写出现错误,ferror返回一个非零值,否则返回0。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值