C标准库函数--文件IO操作函数。
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操作函数。的更多相关文章
- Linux文件IO操作函数概述
文件概述 Linux中,一切皆文件.文件为操作系统服务和设备提供了一个简单而一致的接口.这意味着程序完全可以像使用文件那样使用磁盘文件.串行口.打印机和其他设备. 也就是说,大多数情况下,你只需要使用 ...
- Linux文件IO操作
来源:微信公众号「编程学习基地」 目录 文件操作 Linux文件类型 Linux文件权限 修改文件权限 Linux error 获取系统调用时的错误描述 打印错误信息 系统IO函数 open/clos ...
- 树莓派学习笔记——使用文件IO操作GPIO SysFs方式
0 前言 本文描写叙述假设通过文件IO sysfs方式控制树莓派 GPIO端口.通过sysfs方式控制GPIO,先訪问/sys/class/gpio文件夹,向export文件写入GPIO编号, ...
- Linux学习记录--文件IO操作相关系统编程
文件IO操作相关系统编程 这里主要说两套IO操作接口,各自是: POSIX标准 read|write接口.函数定义在#include<unistd.h> ISO C标准 fread|fwr ...
- C语言对文件的操作函数用法详解2
fopen(打开文件) 相关函数 open,fclose 表头文件 #include<stdio.h> 定义函数 FILE * fopen(const char * path,const ...
- C语言对文件的操作函数用法详解1
在ANSIC中,对文件的操作分为两种方式,即: 流式文件操作 I/O文件操作 一.流式文件操作 这种方式的文件操作有一个重要的结构FILE,FILE在stdio.h中定义如下: typedef str ...
- linux文件IO操作篇 (一) 非缓冲文件
文件IO操作分为 2 种 非缓冲文件IO 和 缓冲文件IO 它们的接口区别是 非缓冲 open() close() read() write() 缓冲 fopen() fclose() fread() ...
- 9.2 Go 文件IO操作
9.2 Go 文件IO操作 1.1.1. bufio包 带有缓冲区的IO读写操作,用于读写文件,以及读取键盘输入 func main() { //NewReader返回一个结构体对象指针 reader ...
- 文件IO操作
前言 本文介绍使用java进行简单的文件IO操作. 操作步骤 - 读文件 1. 定义一个Scanner对象 2. 调用该对象的input函数族进行文件读取 (参见下面代码) 3. 关闭输入流 说明:其 ...
随机推荐
- CentOS 6.7 安装配置 nagios
一.简介 Nagios是一款开源的免费网络监视工具,能有效监控Windows.Linux和Unix的主机状态,交换机路由器等网络设置,打印机等.在系统或服务状态异常时发出邮件或短信报警,第一时间 ...
- Nginx 配置优化
一.开启Gzip 1.参数 gzip on;gzip_min_length 1k;gzip_buffers 4 16k;gzip_comp_level 2;gzip_types text/plain ...
- Bing词典vs有道词典比对测试报告——体验篇之成长性及用户控制权
成长性: 会记住曾经查询过的单词或例句与有道词典实现基本一样,并无特别亮点. 用户有控制权: 必应词典和有道词典都能实现基本的查询前进和后退.以及无法查找结果,能顺利进行反馈. 我们在输入完单词按下回 ...
- centos6 安装图形化界面
1.首先进行光盘的挂载,注意光盘挂载时不会自动建立目录的,所以需要自己建立目录 mkdir /mnt/cdrom mount /dev/cdrom /mnt/cdrom #dev目录为设备目录 2.更 ...
- java语言复制数组的四种方法
JAVA语言的下面几种数组复制方法中,哪个效率最高? B.效率:System.arraycopy > clone > Arrays.copyOf > for循环 1.System.a ...
- c++ imooc自学计划
一.视频学习相关的课程列表: C++远征之起航篇http://www.imooc.com/learn/342: C++远征之离港篇http://www.imooc.com/learn/381: C++ ...
- 24_IO_第24天(转换流、缓冲流)_讲义
今日内容介绍 1.转换流 2.缓冲流 01转换流概述 * A: 转换流概述 * a: 转换流概述 * OutputStreamWriter 是字符流通向字节流的桥梁:可使用指定的字符编码表,将要写入流 ...
- Error: Unable to access jarfile D:\Apache\apache-jmeter-3.0\bin\ApacheJMete.jar
双击jmeter.bat后,在cmd窗口显示Error: Unable to access jarfile D:\Apache\apache-jmeter-3.0\bin\ApacheJMete.ja ...
- Python模块Scrapy导入出错:ImportError: cannot import name xmlrpc_client
Mac(OS version: OS X Yosemite 10.10.5)上安装Scrapy模块,使用时出现: from six.moves import xmlrpc_client as xmlr ...
- mysql 数据到 导入导出 总结
数据库数据的导入和导出受secure_file_priv配置项影响#限制导入导出,null时无法进行数据的导入导出,空时不限制,设置了目录则只能对该目录下的文件进行导入导出show variables ...