C标准库文件读写函数总结:
都是对文件流进行输入输出的函数
分为对文件的有格式读写以及无格式读写

一.文件的无格式读写
根据每次读写字符的数量,分为三类:
1.按字符读写文件

按字符读有三个函数:以下三个函数,当文件结束或发生错误时,都返回EOF,EOF数值一般定义为(int)-1
(1)int getc(FILE* stream);
    以unsigned char类型读取文件输入流stream中的一个字符,并将其转换为整型后返回,同时移动文件指针到下一个字符处。
(2)int getchar(void);
实际上是关于getc的宏定义getc(stdin);
(3)int fgetc(FILE* stream);
执行速度远低于getc

按字符写有三个函数:以下三个函数,调用成功返回其写入的数值,即参数c的数值,否则返回EOF
(1)int putc(int c,FILE* stream)
首先将int型参数c自动转换为unsigned char类型,然后写入文件流,同时移动文件指针到下一个字符处。
(2)int putchar(int c);
实际上是关于putc的宏定义putc(int c,stdout);
(3)int fputc(int c,FILE* stream);
执行速度远低于putc

2.按行读写文件(是为了方便文本文件的操作才提供了此套函数)
    
按行读:该类函数一次读取到换行符'\n'为止,写入数据时自动输出换行符。
   
(1)char* gets(char* s);
从标准输入流stdin中读取一串字符存储到参数s所指向的内存空间中,自动增加字符串结束'0'。当文件结束或者发生错误返回NULL,否则返回参数s所指向的内存地址
(2)char* fgets(char* s,int n,FILE* stream);
从文件流stream中读取一串字符到参数s所指向的内存空间中,自动增加字符串结束符'0'。读取数据的长度(包括换行符\n)不能超过n-1。参数n代表了字符串的最大存储空间,如果读入的实际数据长度超过了n-1(包括\n),则函数将截取该n-1个字符返回,剩余的字符将在下一次fgets调用时读入。 成功返回s,否则返回NULL

按行写:
两函数都不输出字符串末的'0'字符。
输出失败时都返回EOF
(1)int puts(const char* s);
s指向一串以字符串结束符'0'结尾的字符。
puts把字符串写入标准输出流stdout,并自动输出换行符\n
(2)int fputs(const char* s,FILE* stream);
s指向一串以字符串结束符'0'结尾的字符。
fputs把字符串写入文件流stream,不再输出换行符\n

3.按块儿读写

(1)size_t fread(void* ptr,size_t size,size_t nitems,FILE* stream);
fread从文件流stream中读入nitems个数据项存储到ptr所指向的内存中,每个数据项size字节大小,一次操作总共读入size*nitems个字节。
(2)size_t fwrite(const void* ptr,size_t size,size_t nitems,FILE* stream);
fwrite将ptr指向的数据写到文件流stream中,nitems表示写入文件的数据项个数,size表示每个数据项的字节大小。每次可写入size*nitems个字节。
typedef unsigned int  size_t;

这两个函数不返回实际读写的字节数,而是返回实际读写的数据项个数。
成功返回等于nitems的值
失败返回小于nitems的值。

二.文件的有格式读写
”格式化读写“具有数据格式自动转换和文件流输入输出的两个过程。
输入时,函数依照某种规则先将文件流中的字符串数据转换为二进制格式数据,再存入内存中。
输出时,函数依照某种规则先将内存中的二进制数据转换为字符串格式,再输出到文件流中。

文件格式化读写能够自动转换的数据格式有:数据类型,精度,宽度,进制,标志等。

文件格式化输出函数族:
格式化输出函数按照用户指定的格式将指定的数据以字符串形式输出到文件流中:
int printf(const char* format,...);
int fprintf(FILE* stream,const char* format,...);
输出结果到文件流stream
int sprintf(char* s,const char* format,...);
输出结果到字符串s中,同时在字符串末尾自动加上字符结束符'\0'.

以上三个函数,调用成功时都返回实际输出的字符数。否则返回一个负数

文件格式化输入函数族:
把字符串形式转化为基本数据类型存入内存。
int scanf(const char* format,...);
int fscanf(FILE* stream,const char* format,...);
从指定的文件输入流stream中获取原始输入信息
int sscanf(coonst char* s,const char *format,...);
从参数s中获取原始输入信息。
以上三个函数能自动过滤输入流中的空格,制表符符号。调用成功返回读入值的参数个数,否则返回EOF

C标准库函数--文件IO操作函数。的更多相关文章

  1. Linux文件IO操作函数概述

    文件概述 Linux中,一切皆文件.文件为操作系统服务和设备提供了一个简单而一致的接口.这意味着程序完全可以像使用文件那样使用磁盘文件.串行口.打印机和其他设备. 也就是说,大多数情况下,你只需要使用 ...

  2. Linux文件IO操作

    来源:微信公众号「编程学习基地」 目录 文件操作 Linux文件类型 Linux文件权限 修改文件权限 Linux error 获取系统调用时的错误描述 打印错误信息 系统IO函数 open/clos ...

  3. 树莓派学习笔记——使用文件IO操作GPIO SysFs方式

    0 前言     本文描写叙述假设通过文件IO sysfs方式控制树莓派 GPIO端口.通过sysfs方式控制GPIO,先訪问/sys/class/gpio文件夹,向export文件写入GPIO编号, ...

  4. Linux学习记录--文件IO操作相关系统编程

    文件IO操作相关系统编程 这里主要说两套IO操作接口,各自是: POSIX标准 read|write接口.函数定义在#include<unistd.h> ISO C标准 fread|fwr ...

  5. C语言对文件的操作函数用法详解2

    fopen(打开文件) 相关函数 open,fclose 表头文件 #include<stdio.h> 定义函数 FILE * fopen(const char * path,const  ...

  6. C语言对文件的操作函数用法详解1

    在ANSIC中,对文件的操作分为两种方式,即: 流式文件操作 I/O文件操作 一.流式文件操作 这种方式的文件操作有一个重要的结构FILE,FILE在stdio.h中定义如下: typedef str ...

  7. linux文件IO操作篇 (一) 非缓冲文件

    文件IO操作分为 2 种 非缓冲文件IO 和 缓冲文件IO 它们的接口区别是 非缓冲 open() close() read() write() 缓冲 fopen() fclose() fread() ...

  8. 9.2 Go 文件IO操作

    9.2 Go 文件IO操作 1.1.1. bufio包 带有缓冲区的IO读写操作,用于读写文件,以及读取键盘输入 func main() { //NewReader返回一个结构体对象指针 reader ...

  9. 文件IO操作

    前言 本文介绍使用java进行简单的文件IO操作. 操作步骤 - 读文件 1. 定义一个Scanner对象 2. 调用该对象的input函数族进行文件读取 (参见下面代码) 3. 关闭输入流 说明:其 ...

随机推荐

  1. lspci命令详解

    基础命令学习目录首页 最近经常用到 lspci -nn | grep Eth 命令,需要学习下PCI总线,找到一篇文章,虽然也是转载,但写的较清晰,再次转载下. http://blog.csdn.ne ...

  2. java.util.ConcurrentModificationException: null

    是因为在map.foreach中又put新的值了 在map.foreach中可能是不可以增删改

  3. Daily Scrum (2015/11/8)

    由于编译大作业临近deadline以及各项选修课即将结课,虽然PM强调软工任务也很紧迫,但是大多数成员表示今天想请假一天.符美潇今天把自己所负责的数据库编码部分和谢金洛的UI进行了对接.在测试过程中发 ...

  4. 蹭课神器NABCD分析

    特点:添加了课程分类,同学们可以根据自己的兴趣蹭课N(need):众所周知,大学是丰富多彩的自有天堂,学生能够在课余去旁听一些自己有兴趣的课,我们项目要解 决的就是同学们对校园课程有针对性的选择.A( ...

  5. MIT挑战(如何在12个月内自学完成MIT计算机科学的33门课程|内附MIT公开课程资源和学习顺序

    译者注:本文译自Scott H. Young的博客,Scott拥有超强的学习能力,曾在12个月内自学完成麻省理工学院计算机科学的33门课程.本文就是他个人对于这次MIT挑战的介绍和总结. 版权声明:本 ...

  6. PMS—团队展示

    点我查看作业原题 [队名] PMS(一群pm) [拟做的团队项目描述] 基于监控场景的视频摘要与人车检测跟踪系统 A system, under monitor scene, for video su ...

  7. 深入理解Java类加载器(1)

    类加载器概述: java类的加载是由虚拟机来完成的,虚拟机把描述类的Class文件加载到内存,并对数据进行校验,解析和初始化,最终形成能被java虚拟机直接使用的java类型,这就是虚拟机的类加载机制 ...

  8. appium启动sdk的android模拟器

    (1)启动sdk安装目录下的AVD Manager.exe (2)如下图,点击[create]按钮 (3)如下图,设置虚拟机的配置,至于Target中的:Android 4.4.2是在安装sdk的时候 ...

  9. js中的extend,可实现浅拷贝深拷贝

    js中的extend   1.    JS中substring与substr的区别 之前在项目中用到substring方法,因为C#中也有字符串的截取方法Substring方法,当时也没有多想就误以为 ...

  10. Qt之美(一):d指针/p指针详解(二进制兼容,不能改变它们的对象布局)

    Translated  by  mznewfacer   2011.11.16 首先,看了Xizhi Zhu 的这篇Qt之美(一):D指针/私有实现,对于很多批评不美的同路人,暂且不去评论,只是想支持 ...