16-字符类型

字符类型

  • char 是一种整数,也是一种特殊的类型:字符. 这是因为:
  • 用单引号表示的字符字面量: ‘a’ , ‘i’
  • ’ '也是一个字符
  • scanf和printf里用%c来输入输出字符
#include <stdio.h>
int main( )
{
	char c;
	char d;
	c = 1;          //这里c是整数1,类型为整数类型
	d = '1';        //这里d是字符1,类型是字符类型
	if ( c == d ) {
		printf("相等\n" );
	}else {
		printf("不相等\n");
	}
	printf( " c=%d\n", c);
	printf( "d=%d\n", c);
	
	return 0;
}

结果:不相等
c=1
d=9

字符的输入和输出

  • 如何输出’1’这个字符给char c?
    scanf(“%c”,&c); —>输入1
    scanf(“%d”,&i); c= i; —>输入49
    (注:这里不能直接写scanf(“%d”,&c),因为scanf-%d只能处理int,不能处理char)
  • ‘1’的ASCII 编码是49,所以当c == 49时,它代表’1’
#include <stdio.h>
int main( )
{
	int i;
	char c;
	scanf ( "%d", &i) ;
	c = i;
	printf ( "c=%d\n", c);
	printf ( "c='%c ' ln", c);
	
	return 0;
}

结果:49
c=49
c=‘1’

混合输入

  • scanf(“%d %c”&i,&c);
#include <stdio.h>

int main( )
{
	int i;char c;
	scanf ( "%d %c", &i, &c);
	printf (" i=%d,c=%d,c='%c ' ln" ,i,c,c) ;
	return 0;
}

请添加图片描述

  • scanf(“%d%c”,&i,&c);
#include <stdio.h>

int main( )
{
	int i;char c;
	scanf ( "%d%c", &i, &c);
	printf (" i=%d,c=%d,c='%c ' ln" ,i,c,c) ;
	return 0;
}

请添加图片描述

可以看出scanf里面%d与%c之间有无空格是有区别的.
–若有空格,则把第一个数读入后,把其后面的空格也读完,才读入下一个数.
–若无空格,则读入第一个数后直接读入下一个数,若此数是空格,则空格也会被读入.

字符计算

  • 一个字符加一个数字得到ASCII之后的字符
  • 两个字符相减,得到它们在表中的距离
    eg:
    char c = ‘A’;
    c++;
    printf(“%c\n”,c); //输出B
    eg:
    int i = ‘Z’ - ‘A’;
    printf(“%d\n”,i);

字母大小写转换

  • 字母在ASCII表中是顺序排列的

  • 大写字母和小写字母是分开排列的,并不在一起

  • ‘a’-'A’可以得到两段之间的距离,于是
    ●a+‘a’-'A”可以把一个大写字母变成小写字母,而
    ●a+‘A’-'a’可以把一个小写字母变成大写字母

逃逸字符

  • 用来表示无法打印出来的控制字符或者特殊字符,它由一个反斜杠""开头,后面跟上另一个字符,这两个字符合起来,组成了一个字符

  • eg:请添加图片描述
    这里有两个双引号,若不加\会混淆
    请添加图片描述

  • 制表位(\t)
    到每行固定的位置
    一个\t使得输出从下一个制表位开始
    用\t能使得上下两行对其

#include stdio.h>
int main( )
{
	printf ( "123\t456\n" );
	printf ( "12\t456");
	
	return 0;
}

输出结果如下:
请添加图片描述

  • \b :z在不同编译器上意义不同,可能是回退一格,有可能是删除上一格
#include <stdio.h>

int main()
{
	printf ( "123\bA\n456\n");
	
	return 0;
}

结果如下:
请添加图片描述
可以看出光标回退了一格使A代替了3

ASCII表

请添加图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值