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. Centos7 zabbix 分布式监控

    分布式监控 zabbix Server ===> zabbix agent (只能同一个局域网监控)     分布式监控:         a. 分担压力,降低负载         b. 多机房 ...

  2. 6.capacity scheduler

      1.先决条件 要使用yarn的capcitiy调度器,必须开启yarn的ACLs,否则队列ACLs设置不生效 开启yarn ACLs: # hadoop: core-site.xml hadoop ...

  3. 欢迎来怼--第二十二次Scrum会议

    欢迎来怼--第二十二次Scrum会议 一.小组信息 队名:欢迎来怼 小组成员 队长:田继平 成员:李圆圆,葛美义,王伟东,姜珊,邵朔,阚博文 小组照片 二.开会信息 时间:2017/11/10 17: ...

  4. OO第四阶段总结

    一.测试与正确性论证的区别 从哲学的角度来说,正确性论证与测试的关系就像理论与实践的关系一样. 使用测试的方法检验程序正确性确实是一个非常方便可行且广泛运用的方法.可以通过几个简单或复杂的测试样例,迅 ...

  5. spring冲刺第九天

    昨天使炸弹可以炸死人物并可以炸没砖块,并试着将小怪加入地图. 今天设计游戏的道具,比如吃了道具人物反方向运动等. 遇到的问题设计不够完善,道具单一.

  6. java中方法传入参数时:值传递还是址传递?

    JAVA中的数据类型有两大类型: ① 基本数据类型:逻辑型(boolean).文本型(char).整数型(byte.short.int.long).浮点型(float.double) ② 引用数据类型 ...

  7. PROFIBUS-DP

    PROFIBUS – DP的DP即Decentralized Periphery.它具有高速低成本,用于设备级控制系统与分散式I/O的通信.它与PROFIBUS-PA(Process Automati ...

  8. 软工网络15团队作业8——Beta阶段敏捷冲刺(Day3)

    提供当天站立式会议照片一张 每个人的工作 1.讨论项目每个成员的昨天进展 赵铭: 还是在学习知晓云数据库怎么用 吴慧婷:这两天进一步进行界面设计,暂时完成了背单词界面的初步设计. 陈敏: 完成了背单词 ...

  9. net user 修改密码的坑

    不多说 直接上图 自己偷懒修改 admin的密码.. 结果没注意 这个地方 能够输入全角字符. 造成密码 实质上是全角的 标点符号 ... 以后一定注意一些. 里面的坑..说多了 都是浪费时间 另外 ...

  10. php父级目录文件包函问题

    问题: php子目录不能包函父目录中的文件. 环境: 网站根目录:/var/www/html/ PHP版本: 5.3.3 Apache版本:2.2 好了,创建三个文件: //文件路径:/var/www ...