码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2015-01-10 12:45:37      阅读:281      评论:0      收藏:0      [点我收藏+]

标签:sprintf   snprintf   fprintf   sscanf   fscanf   

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之格式化输入和输出

标签:sprintf   snprintf   fprintf   sscanf   fscanf   

原文地址:http://blog.csdn.net/chienchia/article/details/42580701

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!