prinf()函数的返回值
puts("**********************************************************************");
int num=0;
num=printf("Hello China!\n");
printf("%d\n",num);
运行结果
Hello China!
13
printf输出的格式: % [标记][输出最小宽度].[精度][修饰符]格式字符(也称转换说明)
#include<stdio.h>
#define WAS "What\'s you name"
int main()
{
printf("未使用:*%10d*\t使用:*%-10d*\n\n",100,100);
printf("%+d\t%+d\n\n",-110,123);
printf("*% d*\t*% d*\n\n",-123,123);
printf("%#o\t%#x\t%#X\n",12,11,13);
printf("%#.f\t%.f\n",4.456,4.456);
printf("%#.e\t%.e\n",4.4e12,4.4e12);
printf("%08d\t%08d\t*%-08d*\t*%08.2f*\n",211,-211,211,211.237);
printf("%08d\t%08.5d\n\n",211,211);
puts("*******************************************************************");
printf("*%d*\t*%d*\t[%s]\n",-78,65535,WAS);
printf("*%4d*\t*%4d*\t[%25s]\n",-78,65535,WAS);
printf("*%-4d*\t*%-4d*\t[%-25s]\n",-78,65535);
printf("*%+4d*\t*%+4d*\n",-78,65535);
printf("*%#4x*\t*%#4X*\n",-10,10);
printf("*%05.1f*\t*%05.1f*\n",-2.1,34.3456);
printf("*% 4d*\t*% 4d*\n",-78,65535);
puts("***********************************************************");
printf("%.4d\t%.6d\n",234567,2345);
printf("%.3f\n",3.141592);
printf("%.9s\n",WAS);
printf("%.5g\t%.5g\n",1.255555e13,2.3456789);
puts("*********************************************************");
puts("*************************************************************");
printf("%%a、%%A 浮点数、十六进制和p计数法:%a,%A\n",33.2456,33.2456);
printf("%%c 单个字符:%c\n",'a');
printf("%%d、%%i 有符号十进制整数:%+d,%+i\n",-100,100);
printf("%%e、%%E 浮点数、e计数法:%e,%e\n",100.2,100.2);
printf("%%g、%%G 根据值的不同,自动选择%%f或%%e,%%e、%%E格式用于指数小于-4或者大于或等于精度时:%g,%G\n",12.3e-6,12.3e-6);
printf("%%u 无符号十进制数:%u\n",23);
printf("%%o 无符号八进制:%#o\n",21);
printf("%%x、%%X 无符号十六进制:%#x,%#X\n",12,12);
int *a;
printf("%%p 指针:%#p\n",a);
printf("%%s 字符串:%s\n",WAS);
printf("%% 打印一个百分号\n");
return 0;
}
运行结果
动态设置输出宽度和精度
puts("************************************************************");
int m,n;
puts("设置数据最少输出宽度值:");
scanf("%d",&m);
puts("设置数据的小数位数:");
scanf("%d",&n);
printf("%*.*f\n",m,n,130.79069388);
运行结果
第一次:
设置数据最少输出宽度:
5
"设置数据的小数位数:
3
130.791
第二次:
设置数据最少输出宽度:
10
"设置数据的小数位数:
5
130.79069
转义序列
puts("********************************************************************");
printf("\a警报字符,发出一声蜂鸣\n");
printf("把活跃位置\v移至下一个垂直制表点\n把活跃位置\f移至下一页的开始处\n");
getchar();
printf("换行符,把活跃位置移至下一行的开始处\n");
getchar();
printf("回车符,把活跃位置移动到当前行的开始处:\r");
getchar();
printf("水平制表符\t,把活跃位置移动到下一个水平制表点(通常是第一个、第九个、第十七个、第二十五个等字符位置)");
getchar();
printf("退格符:\b,把活跃位置向前移动一个位置");
getchar();
printf("\\反斜杠 \'单引号 \"双引号 \?问号");
getchar();
printf("发出一声蜂鸣:\007\n");
printf("\x31");
printf打印较长的字符串
printf("如果空白(空格、制表符、换行符)仅用于分隔不同的部分,");
printf("C 编译器会忽略它们。因此,一条语句可以写成多行,");
printf("只需在不同部分之间输入空白即可。\n");
printf("用反斜杠(\)和Enter(或Return)键组合来断行。这使得光标\
移至下一行,而且字符串中不会包含换行符。其效果是在下一行继续输出.\
但是,下一行代码必须和程序清单中的代码一样从最左边开始。如果缩进该\
行,比如缩进5个空格,那么这5个空格就会成为字符串的一部分。\n");
printf("ANSI C引入的字符串连接"
"在两个用双引号括起来的字符串之间用空白隔开"
"C编译器会把多个字符串看作是一个字符串。\n");