标签: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字节
标签:sprintf snprintf fprintf sscanf fscanf
原文地址:http://blog.csdn.net/chienchia/article/details/42580701