尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

【00015】

【00015】 4.2 IO1. 文件存放在磁盘空间中的一段数据的集合2. 文件操作的三个步骤1打开文件fopen2读写文件fputc/fgetcfputs/fgetsfprintf/fscanffwrite/fread3关闭文件fclose3. ASCII码文件与二进制文件ASCII码文件是一种特殊的二进制文件ASCII码文件文件中的每个字符均是能够显示在终端的ASCII码字符文本文件程序代码二进制文件文件中存在一些不能再终端显示的ASCII码字符图片音视频压缩包函数接口1. fopenFILE *fopen(const char *pathname, const char *mode);功能打开pathname对应的文件并与之建立一个流参数pathname:要打开的文件路径字符串首地址mode:打开文件的方式r只读 文件不存在则报错文件存在只读打开r读写 文件不存在则报错文件存在读写打开w只写 文件不存在就创建文件存在清0只写打开w写读 文件不存在就创建文件存在清0写读打开a追加只写 文件不存在就创建文件存在追加只写打开a追加读写 文件不存在就创建文件存在追加读写打开返回值成功打开返回创建的流的空间首地址失败返回NULL流有方向性具有连续性三个流会随着程序的执行被默认打开stdin标准输入流stdout标准输出流stderr标准错误流2. fcloseint fclose(FILE *stream);功能关闭流参数stream:文件流指针返回值成功返回0失败返回EOF3. 缓存标准IO是有缓存的IO用户调用标准IO标准IO满足刷新条件会将数据传递给内核根据刷新条件缓存可以分为三种类型全缓存缓存区满刷新大小4K 4096字节刷新条件1. 缓存区满刷新2. 使用fflush强制刷新3. 程序结束或fclose刷新与文件建立的流都为全缓存行缓存缓存区满或遇到\n刷新大小1K 1024字节刷新条件1. 缓存区满刷新2. 使用fflush强制刷新3. 程序结束或fclose刷新4. 遇到\n刷新与终端建立的流都为行缓存不缓存立即刷新大小0K立即刷新出错处理人机交互实时性要求的场景都要立即刷新stderr4. 文件读写的函数接口1. fputcint fputc(int c, FILE *stream);功能将字符C写入流中参数c:写入的字符stream:文件流指针返回值成功返回写入字符的ASCII码值失败返回EOF(-1)2. fgetcint fgetc(FILE *stream);功能从流中读取一个字符参数stream:文件流指针返回值成功返回接收字符的ASCII码值失败返回EOF读到文件末尾返回EOF3. fputsint fputs(const char *s, FILE *stream);功能将s指向的字符串写入stream流中参数s要写入字符串空间的首地址stream:文件流指针返回值成功返回非负整数失败返回EOFfputs不会多打印\n字符puts会多打印\n字符4. fgetschar *fgets(char *s, int size, FILE *stream);功能从流中读取一行字符串参数s:读取字符串存入空间的首地址size:最多读取字符的个数stream:文件流指针返回值成功返回s空间地址失败返回或读到文件末尾返回NULLgets会去掉从终端接收的\nfgets从stdin读数据时不会去掉的\n5. fprintfint fprintf(FILE *stream, const char *format, ...);功能将格式化的format的字符串写入stream流中参数stream:文件流指针format:格式化字符串空间首地址返回值成功返回打印在终端的字符的个数失败返回负数6. fwritesize_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream);功能向流中写入nmemb个对象每个对象size个字节在ptr指向的空间中参数ptr写入数据空间首地址size每个数据对象的大小nmemb:对象个数stream文件流指针返回值成功返回实际写入对象的个数失败返回07. freadsize_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);功能从流中读nmemb个对象每个对象size个字节存放在ptr指向的空间中从stream对应的流中读取参数ptr:存放数据空间的首地址size:读取对象的大小nmemb:读取对象的个数stream:文件流指针返回值成功返回读取对象个数失败或者读到末尾返回08. fseekint fseek(FILE *stream, long offset, int whence);功能重新设置流的偏移量参数stream:文件流指针offset:偏移量whenceSEEK_SET定位到文件开头SEEK_CUR定位到当前位置SEEK_END定位到文件末尾返回值成功返回0失败返回-19. ftelllong ftell(FILE *stream);功能获得流的偏移量10. rewindvoid rewind(FILE *stream);功能重新将流偏移量定位到开头
返回列表