首页 > 代码库 > 标准IO之格式化输入和输出

标准IO之格式化输入和输出

1. 格式化输入

返回值:三个函数的返回值一致,若成功,指定输入的项数,若输入出错或在任意变换前已到达文件结尾则返回EOF

(1). scanf

原型:int scanf(const char *restrict format, ...);

最基础,从标准输入输入

(2). fscanf

原型:int fscanf(FILE *restrict fp, const char *restrict format, ...);

(1)相比,可以指定流fp,不再局限标准输入

(3). sscanf

原型:int sscanf(const char *restrict buf, const char *restrict fromat, ...);

(2)相比,不是从流输入,从数组buf中输入

2. 格式化输出

(1). printf 

最基础,将格式化数据写到标准输出,不涉及缓冲区溢出的问题

返回值:若成功返回输出字符数,若出错则返回负值

(2). fprintf

原型:int fprintf(FILE *restrict fp, const char *restrict format, ...);

返回值:若成功返回输出字符数,若出错则返回负值

(1)相比,可以指定要写入的流,不再局限标准输出

(3). sprintf

原型:int sprintf(char *restrict buf, const *restrict format, ...);

返回值:若成功返回存入数组中的字符数,若编码出错则返回负值

(2)相比,写入的不再是流,而是数组buf,sprintf会在该数组的尾端自动添加一个null字节,但该字节不包括在返回值中,由于加入null字节的缘故,可能会造成缓冲区溢出,调用者要注意。

(4). snprintf

原型:int sprintf(char *restrict buf, size_t n, const *restrict format, ...);

返回值:若成功返回存入数组中的字符数,若编码出错则返回负值

(3)相比,加入了缓冲区长度n,解决了缓冲区溢出的问题,返回值也不包括null字节

标准IO之格式化输入和输出