C之I/O

总结C语言标准函数库中输入/输出的知识,即标准函数库中的一组I/O函数。

如果用系统调用,不同的系统就会有不同的API函数,如Linux上有create / open / close / read / write / lseek / access,Windows上有CreateFile / OpenFile等,这样不利于程序的可移植性,C函数库就是用来解决这个问题的,Windows上有Microsoft C Run-time Library (CRT),Linux上有glibc,不同的C函数库虽然不尽相同,但都遵循C语言的标准函数规范。


stdio

包含头文件:

#include <stdio.h>



FILE结构体用来封装流。


字节流分为:

  1. texxt
  2. binary

标准流:

  • stdin
  • stdout
  • stderr
标准流不需要打开和关闭。

标准I/O常量:

  • EOF
  • FOPEN_MAX
  • FILENAME_MAX

I/O函数

输入&输出

  1. 字符IO,处理单个字符系列: getchar / putchar , fgetc / fputc , getc / putc
  2. 行(非格式化&格式化)IO, 处理文本行系列: fgets / fputs , gets / puts ,  fscanf  / sscanf / scanf, fprintf  / sprintf / printf
  3. 二进制IO,处理二进制数据系列: fread / fwrite

处理字符和文本行(非格式化)输入,

如下,getc和getchar为宏定义


处理字符和文本行(格式化)输入


处理字符和文本行(非格式化)输出


处理字符和文本行(格式化)输出


二进制IO

不需要在数值和字符间转换,效率较高。


打开&关闭

  1. fopen系列
  2. fclose系列




刷新&定位

  1. fflush
  2. fseek, ftell

刷新

输入/输出操作的是被缓冲在内存中的字节流,此缓冲些只有在被写满时(多大的空间呢?)才会被真正写入到物理文件或者输出到设备中,当然可以手动强制将缓冲的数据刷新出去,即调用fflush函数,这个方法经常被用在printf函数后,让printf打印的那些Debug信息立即输出。

改变缓冲方式


定位


流状态检测


临时文件

  1. tmpfile
  2. tmpnamt



文件操作





e.g.

错误处理





e.g.


参考

Pointers On C》(第十五章)
C Specifications
  1. ISO/IEC 9899:2011 "Programming Languages. C" (The "C11");
  2. ISO/IEC 9899:1999 "Programming Languages. C" (The "C99");
  3. ISO/IEC 9899:1990 "Programming Languages. C" (The "C90").
C Textbooks
  1. Kernighan and Ritchie "The C Programming Language", 2nd ed, 1988, (The "K&R". The Bible for the C language).
  2. Plauger, "The Standard C Library", 1992.
Online References
  1. GNU GCC (GNU Compiler Collection) @ http://gcc.gnu.org, with source codes.


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值