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. 使用spring整合Quartz实现—定时器

    使用spring整合Quartz实现—定时器(Maven项目做演示) 不基于特定的基类的方法 一,开发环境以及依赖的jar包 Spring 4.2.6.RELEASE Maven 3.3.9 Jdk ...

  2. halt命令详解

    基础命令学习目录首页 原文链接:https://www.jb51.net/LINUXjishu/57947.html 名称:halt 使用权限:系统管理者 halt 使用方式:halt [-n] [- ...

  3. ftp部署及使用

    常用软件安装及使用目录 http://www.jb51.net/article/106604.htm   ftp部署 本篇文章主要介绍了CentOS7.0下安装FTP服务的方法,小编觉得挺不错的,现在 ...

  4. Data truncation: Truncated incorrect DOUBLE value:

    在写sql查询语句queryRunner.update(connection,"update account set balance=? where name=?",account ...

  5. Daily Scrum 11.14

    姓名 今日任务 黄新越 按照热度排序->产生柱状图 刘垚鹏 总体代码架构整合 王骜 总体代码架构整合 林旭鹏 优化整体UI布局 安康 优化整体UI布局 黄伟龙 预先合作编写测试用例 马佐霖 预先 ...

  6. Daily Scrum (2015/10/21)

    今天可以说是项目正式开始的第一天,由于大家缺乏做团队项目的经验,对TFS的使用都还不太熟悉,所以今天大家的主要工作是熟悉TFS的使用和对代码进行初步的理解.我们预计需要2-3天时间来理解透彻源代码.以 ...

  7. 20172319 《Java程序设计教程》 第10周学习总结

    20172319 2018.05.09-05.21 <Java程序设计教程>第10周学习总结 目录 教材学习内容总结 教材学习中的问题和解决过程 代码调试中的问题和解决过程 代码托管 上周 ...

  8. Task 6.4 冲刺Two之站立会议3

    今天我参考各种聊天软件的主界面,仿照他们的形式对其中的界面和功能进行设置.重新完善了一下昨天完成的主要功能结构的框架.将各个功能按钮分别放到相应的位置,使界面看起来更加地合理,易于接受.

  9. 福大软工1816 · 评分结果 · beta冲刺总评

    作业地址:beta答辩总结.beta冲刺7.beta冲刺6.beta冲刺5.beta冲刺4.beta冲刺3.beta冲刺2.beta冲刺1.beta冲刺前准备 作业提交准则 按时交 - 有分 晚交 - ...

  10. 【Coursera】高斯混合模型

    一.高斯混合模型 软分类算法,即对每一个样本,计算其属于各个分布的概率,概率值最大的就是这个样本所属的分类. 对于训练样本的分布,看成为多个高斯分布加权得到的.其中每个高斯分布即为某一特定的类. 高斯 ...