printf()
直接上代码:
/*printf1.c --演示printf()的一些特性*/
#include<stdio.h>
int main(void){
int ten = 10;
int two = 2;
printf("Doing it right:\n");
printf("%d minus %d is %d \n",ten,2,ten-two );
printf("Doing it wrong:\n");
//注意,这里故意遗漏了两个参数
printf("%d minus %d is %d \n", ten);
return 0;
}
编译时会有警告:
clang: warning: treating 'c' input as 'c++' when in C++ mode, this behavior is deprecated [-Wdeprecated]
/Users/ing/Documents/c:c++/cprimer/printf1.c:12:20: warning: more '%' conversions than data arguments [-Wformat]
printf("%d minus %d is %d \n", ten);
~^
1 warning generated.
大致翻译下意思是说前边的%d多于后边你参数个数,两者数量对应不上。
然后,我们继续运行结果如下:
Doing it right:
10 minus 2 is 8
Doing it wrong:
10 minus 0 is 1573978167
这里我们看下最后一行打印的值 ,有没有发现 打印出来的0 和 1573978167
这两个值其实就是因为我们没有给后两个%d对应参数,直接打印了内存中的任意值。
结论:
在printf()函数中,要确保转换说明符(%d) 和你后边给出的待打印值的数量相等。
sprintf()
sprintf的作用是将一个格式化的字符串输出到一个目的字符串中,而printf是将一个格式化的字符串输出到屏幕。sprintf的第一个参数应该是目的字符串,如果不指定这个参数,执行过程中出现 "该程序产生非法操作,即将被关闭...."的提示。
sprintf()会根据参数format 字符串来转换并格式化数据,然后将结果复制到参数str 所指的字符串数组,直到出现字符串结束('\0')为止。关于参数format 字符串的格式请参考printf()。
网友评论