C语言 输入/输出函数

1). 错误报告
perror函数以一种简单、统一的方式报告错误。
void perror(char const *message); //原型定义于stdio.h
标准库函数在一个外部整型变量errno(在 errno.h中定义) 中保存错误代码。

2). 终止执行
该函数是exit,用于终止一个程序的执行,原型定义于stdlib.h
void exit( int status);
注意这个函数没有返回值。当exit函数结束时,程序已经消失,所以它无处可返。

3).I/O概念 (头文件stdio.h包含了C函数库的I/O部分有关的声明)
1流的概念
操作系统负责这些不同设备的通信细节,并向程序员提供一个更为简单和统一的I/O接口
就C程序而言,所有的I/O操作只是简单地从程序移进或移出字节的事情,这种字节流便称为流(stream).
绝大多数流是完全缓冲的(fully buffered)。这意味着“读取”和“写入”实际上是从一块被称为缓冲区(buffer)的内存区域来回复制数据。
警告:若程序失败,缓冲输出可能不会被实际写入,可能使程序员得到关于错误出现位置的不正确结论,解决方法:
printf(“something or other”);
fflush( stdout ); //fflush迫使缓冲区的数据立即写入,不管它是否已满。
流分为两种类型:文本(text)流和二进制(binary)流
2.流I/O总览
I/O函数以三种基本的形式处理数据:单个字符、文本行和二进制数据。
执行字符、文本行和二进制I/O的函数
函数名或函数家族名
数据类型 输入 输出 描述
字符 getchar putchar 读取(写入)单个字符
文本行 gets
scanf puts
printf 文本行未格式化的输入(输出)
格式化的输入(输出)
二进制数据 fread fwrite 读取(写入)二进制数据

输入/输出函数家族
家族名 目的 可用于所有的流 只用于stdin和stdout 内存中的字符串
getchar 字符输入 fgetc,getc getchar
putchar 字符输出 fputc,putc putchar
gets 文本行输入 fgets gets
puts 文本行输出 fputs puts
scanf 格式化输入 fscanf scanf sscanf
printf 格式化输出 fprintf printf sprintf
3.打开流
fopen函数打开一个特定的文件,原型如下:
FILE *fopen( char const *name,char const mode);
FILE
变量的名字是程序用来保存fopen的返回值的,两个参数都是字符串,name是打开的文件或设备的名字,mode(模式)参数提示流是用于只读、只写还是既读又写,以及它是文本流还是二进制流。

读 取 写 入 添 加
文本 “r” “w” “a”
二进制 “rb” “wb” “ab”
如果fopen函数执行成功,返回一个指向FILE结构的指针;如果执行失败,会返回一个NULL指针,errno会提示问题的性质
FILE *input;
input=fopen(“data3”,“r”);
if(input==NULL){
perror(“data3”);
exit(EXIT_FAILURE);
}

4.关闭流
流是用函数fclose关闭的,它的原型如下:
int fclose(FILE *f);
对于输出流,fclose函数在文件关闭之前刷新缓冲区。如果执行成功,fclose返回零值。否则返回EOF.

printf格式代码
代码 参数 含义
c int 参数被剪裁为unsigned char类型并作为字符进行打印
d
i int 参数作为一个十进制整数打印,如果给出了精度而且值的位数少于精度位度,前面就用0填充
u
o
x,X unsigned int 参数作为一个无符号值打印,u使用十进制,o使用八进制,x或X使用十六进制,两者的区别是x约定使用abcdef,而X约定使用ABCDEF
e
E double 参数根据指数形式打印
f double 参数按照常规的浮点格式打印
g
G double 参数以%f或者%e(如G则%E)的格式打印,取决于它的值。如果指数大于等于-4但小于精度字段就使用%f格式,否则使用指数格式
s char * 打印一个字符串
p void *
n int *
% (无)

猜你喜欢

转载自blog.csdn.net/qq_24251645/article/details/89318268