io操作 落日映苍穹つ 2022-06-12 13:58 226阅读 0赞 ## 1.函数原型 ## int sprintf( char \*buffer, const char \*format, \[ argument\] … ); ## [折叠][Link 1][编辑本段][Link 2]参数列表 ## buffer:char型指针,指向将要写入的字符串的缓冲区。 format:格式化字符串。 \[argument\]...:可选参数,可以是任何类型的数据。 ## [折叠][Link 1][编辑本段][Link 3]返回值 ## 字符串长度(strlen) 函数功能:打开一个[文件][Link 4] [函数原型][Link 5]:FILE \* f[open][](const char \* path,const char \* mode); [相关函数][Link 6]:open,fclose,fopen\_s,\_wfopen 所需库:<stdio.h> 返回值:文件顺利打开后,指向该流的[文件指针][Link 7]就会被返回。如果文件打开失败则返回NULL,并把[错误代码][Link 8]存在errno 中。 一般而言,打开文件后会作一些文件读取或写入的动作,若打开文件失败,接下来的读写动作也无法顺利进行,所以一般在fopen()后作错误判断及处理。 参数说明: 参数path[字符串][Link 9]包含欲打开的文件路径及文件名,参数mode字符串则代表着流形态。 mode有下列几种形态字符串: r [以只读方式打开][Link 10]文件,该文件必须存在。 r+ 以可读写方式打开文件,该文件必须存在。 rb+ 读写打开一个[二进制][Link 11]文件,允许读数据。 w 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。 w+ 打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。 a 以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。(EOF符保留) a+ 以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。 (原来的EOF符不保留) wb 只写打开或新建一个[二进制文件][Link 12];只允许写数据。 wb+ 读写打开或建立一个二进制文件,允许读和写。 ab+ 读写打开一个二进制文件,允许读或在文件末追加数据。 上述的形态字符串都可以再加一个b字符,如rb、w+b或ab+等组合,加入b 字符用来告诉函数库打开的文件为二进制文件,而非纯文字文件。不过在POSIX系统,包含Linux都会忽略该字符。由fopen()所建立的新文件会具有S\_IRUSR|S\_IWUSR|S\_IRGRP|S\_IWGRP|S\_IROTH|S\_IWOTH(0666)权限,此文件权限也会参考umask 值。 有些C[编译系统][Link 13]可能不完全提供所有这些功能,有的C版本不用"r+","w+","a+",而用"rw","wr","ar"等,读者注意所用系统的规定。 2.函数格式:char fputc (char ch, File \*fp) 参数解释:fp为[文件指针][Link 7],它的值是执行fopen()打开文件时获得的。 为输出的字符量。 虽然函数被定义为整形数,但仅用其低八位。 返回值:在正常调用情况下,函数返回写入文件的[字符][Link 14]的ASCII码值,出错时,返回EOF(-1)。当正确写入一个字符或一个字节的数据后,文件内部写[指针][Link 15]会自动后移一个字节的位置。EOF是在头文件 stdio.h中定义的宏。 1.被写入的文件可以用、写、读写,追加方式打开,用写或读写方式打开一个已存在的文件时将清除原有的文件内容,写入字符从文件首开始。如需保留原有文件内容,希望写入的字符以文件末开始存放,必须以追加方式打开文件。被写入的文件若不存在,则创建该文件。 2.每写入一个字符,文件内部位置指针向后移动一个字节。 3.fputc函数有一个返回值,如写入成功则返回写入的字符,否则返回一个EOF。可用此来判断写入是否成功。 3.int fgetc(FILE \* stream); ### [折叠][Link 16]函数说明 ### fgetc()从参数stream所指的文件中读取一个字符,并把它作为一个字符返回。若读到文件尾或出现错误时,它就返回EOF,你必须通过ferror或feof来区分这两种情况。 ### [折叠][Link 16]返回值 ### fgetc()会返回读取到的[字符][Link 14],若返回EOF则表示到了文件尾,或出现了错误。 4.size\_t fwrite(const void\* buffer, size\_t size, size\_t count, FILE\* stream); 注意:这个函数以[二进制][Link 17]形式对文件进行操作,不局限于[文本文件][Link 18] 返回值:返回实际写入的数据块数目 (1)buffer:是一个[指针][Link 19],对fwrite来说,是要输出数据的[地址][Link 20]; (2)size:要写入内容的单字节数; (3)count:要进行写入size字节的[数据项][Link 21]的个数; (4)stream:目标[文件指针][Link 22]; (5)返回实际写入的数据项个数count。 说明:写入到文件的哪里? 这个与文件的打开模式有关,如果是w+,则是从file pointer指向的地址开始写,替换掉之后的内容,文件的长度可以不变,stream的[位置移动][Link 23]count个数;如果是a+,则从文件的末尾开始添加,文件长度加大,而且是fseek函数对此函数没有作用 5.size\_t fread(void \**buffer*, size\_t *size*, size\_t *count*, FILE \**stream*); 功 能: 从一个文件流中读数据,读取*count*个元素*,*每个元素*size*字节.如果调用成功返回*count.*如果调用成功则实际读取*size\*count*字节 参 数: *buffer* 用于接收数据的内存地址,大小至少是 *size*\**count* 字节. *size* 单个元素的大小,单位是字节 *count* 元素的个数,每个元素是size字节. stream 输入流 返回值: 实际读取的元素数.如果返回值与*count*(不是*count\*size*)不相同,则可能文件结尾或发生错误. 从ferror和feof获取错误信息或检测是否到达文件结尾. 6.char \*fgets(char \*buf, int bufsize, FILE \*stream); ### [折叠][Link 24]参数 ### \*buf: 字符型指针,指向用来存储所得数据的地址。 bufsize: 整型数据,指明存储数据的大小。 \*stream: 文件结构体指针,将要读取的文件流。 7.fputs是一种函数,具有的功能是向指定的文件写入一个字符串(不自动写入字符串结束标记符'\\0')。成功写入一个字符串后,文件的位置指针会自动后移,函数返回值为非负整数;否则返回EOF(符号常量,其值为-1)。 参数: str是字符型指针,可以是字符串常量,或者存放字符串的[数组][Link 25]首地址。 通过打开文件函数fopen()获得的。 fputs函数的功能是向指定的文件写入一个字符串,其调用形式为: fputs(字符串,文件指针) 其中字符串可以是字符串常量,也可以是字符数组名, 或指针 变量 8.int fseek(FILE \*stream, long offset, int fromwhere);函数设置文件指针stream的位置。 如果执行成功,stream将指向以fromwhere为基准,偏移offset([指针][Link 15][偏移量][Link 26])个字节的位置,函数返回0。如果执行失败(比如offset超过文件自身大小),则不改变stream指向的位置,函数返回一个非0值。 实验得出,超出文件末尾位置,还是返回0。往回偏移超出首位置,返回-1,且指向一个-1的位置,请小心使用。 fseek[函数][Link 27]和lseek函数类似,但lseek返回的是一个off\_t数值,而fseek返回的是一个整型。 [重定位][Link 28]流([数据流][Link 29]/文件)上的文件内部位置[指针][Link 19] 注意:不是[定位文件][Link 30]指针,文件指针指向文件/流。位置指针指向文件内部的字节位置,随着文件的读取会移动,文件指针如果不重新赋值将不会改变指向别的文件。 9.long ftell(FILE \*stream); ftell(fp);利用函数 ftell() 也能方便地知道一个文件的长。如以下语句序列: fseek(fp, 0L,SEEK\_END); len =ftell(fp); 首先将文件的当前位置移到文件的末尾,然后调用函数ftell()获得当前位置相对于文件首的位移,该位移值等于文件所含字节数。 10.fclose是一个函数名,功能是关闭一个流。注意:使用fclose()函数就可以把[缓冲区][Link 31]内最后剩余的数据输出到内核缓冲区,并释放[文件指针][Link 7]和有关的缓冲区。 函数原型:int fclose( FILE \*fp ); 返回值:如果流成功关闭,fclose 返回 0,否则返回EOF(-1)。(如果流为NULL,而且程序可以继续执行,fclose设定error number给EINVAL,并返回EOF。) [Link 1]: https://baike.so.com/doc/5406451-5644300.html# [Link 2]: https://baike.so.com/create/edit/?eid=5406451&sid=5644300&secid=3 [Link 3]: https://baike.so.com/create/edit/?eid=5406451&sid=5644300&secid=4 [Link 4]: https://baike.so.com/doc/3623678-3809447.html [Link 5]: https://baike.so.com/doc/7021338-7244241.html [open]: https://baike.so.com/doc/2529026-2671857.html [Link 6]: https://baike.so.com/doc/7565924-7840017.html [Link 7]: https://baike.so.com/doc/6178200-6391443.html [Link 8]: https://baike.so.com/doc/5600647-5813250.html [Link 9]: https://baike.so.com/doc/630752-667548.html [Link 10]: https://baike.so.com/doc/6819130-7036176.html [Link 11]: https://baike.so.com/doc/1420585-1501617.html [Link 12]: https://baike.so.com/doc/6848461-7065887.html [Link 13]: https://baike.so.com/doc/6133228-6346388.html [Link 14]: https://baike.so.com/doc/2529629-2672477.html [Link 15]: https://baike.so.com/doc/1043844-1104112.html [Link 16]: https://baike.so.com/doc/6147989-6361174.html# [Link 17]: https://baike.so.com/doc/1420585.html [Link 18]: https://baike.so.com/doc/6758573.html [Link 19]: https://baike.so.com/doc/1043844.html [Link 20]: https://baike.so.com/doc/5290892.html [Link 21]: https://baike.so.com/doc/6734126.html [Link 22]: https://baike.so.com/doc/6178200.html [Link 23]: https://baike.so.com/doc/6436705.html [Link 24]: https://baike.so.com/doc/1707741-1805526.html# [Link 25]: https://baike.so.com/doc/5545345-5760453.html [Link 26]: https://baike.so.com/doc/6117681-6330824.html [Link 27]: https://baike.so.com/doc/5368923-5604762.html [Link 28]: https://baike.so.com/doc/1850546.html [Link 29]: https://baike.so.com/doc/6148990.html [Link 30]: https://baike.so.com/doc/1436621.html [Link 31]: https://baike.so.com/doc/2576817-2721104.html
相关 io操作(代码) define _CRT_SECURE_NO_WARNINGS include "stdlib.h" include "stdio.h 红太狼/ 2022年06月12日 14:07/ 0 赞/ 158 阅读
相关 io操作 1.函数原型 int sprintf( char \buffer, const char \format, \[ argument\] … ); [折叠][Link 落日映苍穹つ/ 2022年06月12日 13:58/ 0 赞/ 227 阅读
相关 文件IO操作 File类: file类是IO包中唯一代表磁盘文件本身的对象。file类定义了一些与平台无关的方法来操作文件,通过调用file类提供的各种文件。 能够完成创建,删除,重 你的名字/ 2022年06月08日 08:18/ 0 赞/ 263 阅读
相关 IO操作 File表示文件或文件夹的路径 File file=new File(“F:\\a.text”); file.exists()文件是否存在 File file=new 绝地灬酷狼/ 2022年06月03日 01:47/ 0 赞/ 230 阅读
相关 IO基本操作 package test; import java.io.; public class IOTest2 { st ゝ一世哀愁。/ 2022年05月25日 06:58/ 0 赞/ 197 阅读
相关 IO操作 IO异常处理 / 程序头部注释开始 程序的版权和版本声明部分 Copyright (c) 2011, 烟台大学计算机学院学生 雨点打透心脏的1/2处/ 2022年05月24日 03:48/ 0 赞/ 294 阅读
相关 Java IO操作 一、File类: 利用File可以创建一个路径或是一个文件,并对文件或是路径进行一些操作。 import java.io.File; import java ╰半夏微凉°/ 2022年05月23日 06:25/ 0 赞/ 238 阅读
相关 IO操作 流操作练习 / 程序头部注释开始 程序的版权和版本声明部分 Copyright (c) 2011, 烟台大学计算机学院学生 ゝ一世哀愁。/ 2022年05月17日 10:15/ 0 赞/ 325 阅读
相关 Java IO操作 1 InputStream类型 InputStream的作用是标志那些从不同的数据源产生输入的类,这些源包括:字节数组,String对象,文件,管道,一系列其他流。 た 入场券/ 2021年11月10日 04:18/ 0 赞/ 332 阅读
还没有评论,来说两句吧...