字符类型 | 类型 | scanf | printf |
char | 整数 字符 | %c | %c |
#include <stdio.h>
int main()
{
char c;
scanf("%c",&c);
printf("c=%d\n",c);
printf("c=%c\n",c);
return 0;
}
输入的1用scanf("%c")读入的意思是,按照字符类型入读
用%d输出是按照整数输出而字符‘1’在ASCII码中对应的数值就是49;
用%c输出是按照字符输出,读入字符1,输出字符1;
混合输入
%d与%c之间有无空格读取的内容是不一样的
如果没有空格 scanf("%d%c",i,c); 的意思是整数只读取到%d为止,后面的东西交给%c
#include <stdio.h>
int main()
{
int i;
char c;
scanf("%d%c",&i,&c);
printf("i=%d,c=%d,c='%c'\n",i,c,c);
return ;
}
如果有空格 scanf("%d %c",i,c);的意思是读完%d然后读入输入的空格(不管输入几个都读完)然后剩下的交给%c
#include <stdio.h>
int main()
{
int i;
char c;
scanf("%d %c",&i,&c);
printf("i=%d,c=%d,c='%c'\n",i,c,c);
return ;
}
一般来说带有空格的比较规范,输入时无论输入几个空格或者是不输入空格都能得到正确答案;而无空格的如果在输入时输入了空格那么第二个读入的数值就会是空格而不会是空格后的数值
char参与运算
提要:在ASCII码中字母是按照顺序排列的,且大小写字母分开排列
个字符加一个数字得到ASCII码表中 那个数字之后的字符
#include <stdio.h>
int main()
{
char m='A';
m++;
printf("%c\n",m);
char n='C';
n+=3;
printf("%c\n",n);
return 0;
}
两个字符相减得到他们在表中的距离
#include <stdio.h>
int main()
{
char i='Z'-'A';
printf("%d\n",i);
return 0;
}
可以利用以上特性实现大小写转换
例如:a+'a'-'A'可以将A转换为a
a+'A'-'a'可以将a转换为A