printf()、fprintf()、sprintf()、snprintf()的简介

来源:互联网 发布:淘宝卖家为什么被处罚 编辑:程序博客网 时间:2024/06/05 17:43

一、printf()

函数名:int printf(const char* format, …)

头文件:stdio.h

结果:输出结果到标准的输出处(stdout)

需注意的是

1、%m.ns:输出占m列,但自取字符串中靠左端n个字符,这n个字符在m列的右侧,左边补空格

2、%m.nf:输出共占m列,其中n为小数位,若数值的宽度小于m则左端补空格

3、%md:输出m列宽的字段宽度,若数据的位数小于m,则左端补空格,若大于m,则按实际输出。

 #include <stdio.h>

int main()
{
int a = 123456;
double b = 123.456;
char * c = "abcdefg";

printf("%5d  %8d\n", a, a);
printf("%4.2f  %7.4f\n", b, b);
printf("%3s  %10s\n",c,c);

return 0;
}

结果为:

123456    123456
123.46  123.4560
abcdefg     abcdefg


其它可格式含义可参考一下两处:

http://blog.csdn.net/xiexievv/article/details/6831194

 http://en.cppreference.com/w/cpp/io/c/fprintf

二、fprintf()

函数名:int fprintf(FILE * stream, const char* format, …)

头文件:stdio.h

结果:输出结果到一个文件流里 

三、sprintf()

函数名:int sprintf(char *buffer, const char* format, …)

头文件:stdio.h

结果:输出结果到一个字符串缓冲处

 

四、snprintf()

函数名:int snprintf(char *buffer, size_t buf_size, const char* format, …)

头文件:stdio.h

结果:输出结果到一个字符串缓冲处,最多复制size-1个字符,因为最后一个得是\0

Snprintf有时也可用于进行字符串的复制,分两种情况:

1、   字符串中无%,则可以忽视format,直接snprintf(dest, num, src);(类似于pritnf(“hello,world\n”))

2、   字符串中有%,则应严格按函数的格式,不能忽略format,否则会出现未知的结果

vprintf等四个函数可见网址:

http://en.cppreference.com/w/cpp/io/c/vfprintf