-
printf()
-
- %d:用来输出一个有符号的十进制数。
例子:%d、%5d(指定输出的数据的域宽)、%ld(输出长整型的数据)、%lld(输出双长整型的数据)
- %d:用来输出一个有符号的十进制数。
-
- %c:用来输出一个字符。
例子:%c、%5c(指定输出字符的域宽)
- %c:用来输出一个字符。
-
- %s:用来输出一个字符串。
例子:printf("%s",“STUDY HARD”)
输出:STUDY HARD
- %s:用来输出一个字符串。
-
- %f:用来输出实数,以小数形式输出。
例子:%m.nf型 %6.5f 指输出实数数据占6列,其中包括五位小数。
- %f:用来输出实数,以小数形式输出。
-
- %e:以指数形式输出实数。
-
- %x:以十六进制输出整数。
例子:int a=-1; printf("%x",a);
输出:ffffffff
- %x:以十六进制输出整数。
-
- %o:以八进制整数形式输出。
例子:int a=-1; printf("%o",a);
输出:37777777777
- %o:以八进制整数形式输出。
-
- %i:按十进制整数数据的实际长度输出。相对%d较为少用。
-
- %u:用来输出一个无符号的十进制数。区别于%d。
格式附加字符:
字符 | 说明 |
---|---|
l | 用于长整型整数,可加在格式符d、o、x、u前面 |
m | 表示数据最小宽度 |
n | 对实数,表示输出n位小数;对字符串,表示截取的字符个数 |
- | 输出的数字或字符在域内靠右 |
其他的一些具体修饰:
scanf()
举例:用scanf()读取:-13.45e12# 0
- 如果其对应的转换说明是%d,scanf()会读取3个字符(-13)并停在小数 点处,小数点将被留在输入中作为下一次输入的首字符。
- 如果其对应的转换 说明是%f,scanf()会读取-13.45e12,并停在#符号处,而#将被留在输入中作 为下一次输入的首字符;然后,scanf()把读取的字符序列-13.45e12转换成相 应的浮点值,并储存在float类型的目标变量中。
- 如果其对应的转换说明 是%s,scanf()会读取-13.45e12#,并停在空格处,空格将被留在输入中作为 229
下一次输入的首字符;然后,scanf()把这 10个字符的字符码储存在目标字符 数组中,并在末尾加上一个空字符。 - 如果其对应的转换说明是%c,scanf() 只会读取并储存第1个字符,该例中是一个空格 [4]。
写一个我之前没用过的: * 宽度修饰符的使用
1.输出:用星号 * 修饰符代替字段宽度。
/* varwid.c -- 使用变宽输出字段 */
#include <stdio.h>
int main(void)
{
unsigned width, precision;
int number = 256; 224
double weight = 242.5;
printf("Enter a field width:\n");
scanf("%d", &width);
printf("The number is :%*d:\n", width, number);
//*在d的前面,width和precision提供打印weight的格式化信息。
printf("Now enter a width and a precision:\n");
scanf("%d %d", &width, &precision);
printf("Weight = %*.*f\n", width, precision, weight);
printf("Done!\n");
return 0;
}
2.输入:scanf()中 * 的用法与此不同。把 * 放在%和转换字符之间时,会使得 scanf()跳过相应的输出项。
/* skiptwo.c -- 跳过输入中的前两个整数 */
#include <stdio.h>
int main(void)
{
int n;
printf("Please enter three integers:\n");
scanf("%*d %*d %d", &n);
//跳过两个整数,把第3个整数拷贝给n。
printf("The last integer was %d\n", n);
return 0;
}