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. [朴孝敏][Road Trip]

    歌词来源:http://music.163.com/#/song?id=406907305 作曲 : Ryan S. Jhun/G'harah 'PK' Degeddingseze/Denzil Re ...

  2. html , body , margin , overflow 之大乱战

    <!DOCTYPE html> <html> <head> <style> html,body{ margin:0 ;padding:0 } div{m ...

  3. Scrum立会报告+燃尽图(Final阶段第四次)

    此作业要求参见:https://edu.cnblogs.com/campus/nenu/2018fall/homework/2481 项目地址:https://coding.net/u/wuyy694 ...

  4. 团队冲刺——Five

    昨天: 司宇航:web项目如何部署到公网,把网址做成桌面图标链接,登录记住密码功能. 王金萱:注册和登录界面,用户数据库的信息录入. 马佳慧:做界面. 季方:处理爬虫数据,实现统计功能. 遇到的问题: ...

  5. prototype原型(待完善)

    模式:prototype  解决向量的深浅克隆 #pragma once #ifndef _PROTOTYPE_H_ #define _PROTOTYPE_H_ class Prototype{ pu ...

  6. Matlab图像匹配问题

    已知一个任意形状,查找在大图像中最接近的形状位置. 输入:一个小图形状和一张大图 输出:最接近的形状在大图中的位置 假设: (1)已知形状与目标形状有一定的形变. (2)形状与大图像均为二值图像,图中 ...

  7. Powershell笔记之help about_XXX

    <<about_Arrays>> 1. 一直好奇gettype()输出中的Name这一列的Object[]是什么意思,现在终于明白了,请看下面的例子: 2. GM的不同用法 $ ...

  8. [转帖]awk 入门

    awk其实不仅仅是工具软件,还是一种编程语言.不过,本文只介绍它的命令行用法,对于大多数场合,应该足够用了. http://www.ruanyifeng.com/blog/2018/11/awk.ht ...

  9. [转帖]TLS 版本问题

    转帖 From https://www.cnblogs.com/xjnotxj/p/7252043.html 一.环境: CentOS 6.8nginx 1.6.0php 7.0.10 二.背景 最近 ...

  10. facenet模型训练

    做下记录,脚本如下: 对比 python3 src/compare.py ../models/-/ ../faces/pyimgs/dashenlin/ytwRkvSdG1000058.png ../ ...