字符和字符串
%c格式对应的是单个字符。
%s格式对应的是字符串。
#include <stdio.h>
#include <stdlib.h>
int main()
{
char *str ="hello";
printf("%c",*str);
return 0;
}
运行结果是
#include <stdio.h>
#include <stdlib.h>
int main()
{
char *str ="hello";
printf("%s",str);
return 0;
}
运行结果是
所以%c是输出一个字符,而%s是输出一个字符串,字符串是char *型,打印%c时应该解引用(*str),打印%s时则直接用指针str即可,如果想用%c打印整个字符串,则可以用循环的方式
#include <stdio.h>
#include <stdlib.h>
int main()
{
char *str ="hello";
int i=0;
for(i=0;i<5;i++){
printf("%c",*str++);
}
return 0;
}
char和char*
%c对应类型为char
%s对应类型为char * , 即字符串。
例
char a;
char b[20];
scanf("%c",&a); //只能输入一个字符。
scanf("%s",b); //不超过20字符的字符串,字符串下标为0~19。
用作输入时, 二者参数都要传char * 型.
%c输入函数只会对一个字节空间赋值. 而%s会一直赋值,直到输入中遇到空白字符为止.
用作输出时, %c传char类型,输出一个字符. %s传char*类型参数, 输出到\0为止.输入的时候scanf("%c", &a);这里的&不能少
而scanf("%s",s);这里不能有&符号
转换说明符
%c 字符
%d 有符号十进制整数
%f 浮点数(包括float和doulbe)
%e(%E) 浮点数指数输出[e-(E-)记数法]
%g(%G) 浮点数不显无意义的零"0"
%i 有符号十进制整数(与%d相同)
%u 无符号十进制整数
%o 八进制整数 0123
%x(%X) 十六进制整数0f(0F) 0x1234
%p 指针
%s 字符串
标志
左对齐:"-" "%-2s"代表左对齐2位
右对齐:"+" "%+2s"代表右对齐2位