ASCII码值--字符串--转义字符

ASCII码值

在键盘上可以敲出各种字符,如:a,q,@,#等,这些符号都被称为字符,C语⾔中字符是⽤单
引号 括起来的,如:'a','b','@'。
我们知道在计算机中所有的数据都是以⼆进制的形式存储的,那这些字符在内存中分别以什么样的
⼆ 进制存储的呢?如果我们每个⼈⾃⼰给这些字符中的每个字符编⼀个⼆进制序列,这个叫做编
码,为了⽅便⼤家相互通信,不造成混乱,后来美国国家标准学会(ANSI)出台了⼀个标准
ASCII 编码,C语⾔中的字符就遵循了 ASCII 编码的⽅式。
参考: https://zh.cppreference.com/w/cpp/language/ascii
我们不需要记住所有的ASCII码表中的数字,使⽤时查看就可以
但是我们最好能掌握⼏组特殊的数据:
• 字符A~Z的ASCII码值从65~90
• 字符a~z的ASCII码值从97~122
• 对应的⼤⼩写字符(a和A)的ASCII码值的差值是32
• 数字字符0~9的ASCII码值从48~57
• 换⾏ \n 的ASCII值是:10
• 在这些字符中ASCII码值从0~31 这32个字符是不可打印字符,⽆法打印在屏幕上观察
单个字符的打印可以使⽤%c来指定格式:
#include <stdio.h>
int main()
{
 printf("%c\n", 'Q');
 printf("%c\n", 81);       //这里的81是ASCII值,对应的字符是Q,所以两个打印函数的结果一样
 return  0;
}
#include <stdio.h>
int main()
{
 int i = 0;
 for (i = 32; i <= 127; i++)
 {
 printf("%c ", i);
 if (i % 16 == 15)
 printf("\n");
 }
 return 0;
} 
//此代码实现了从ASCII码值32到127所以字符的输出

字符串和\0

C语⾔中如何表⽰字符串呢?使⽤ 双引号括 起来的⼀串字符就被称为字符串,如:"abcdef",就是
⼀个字符串。字符串的打印格式可以使⽤ %s 
#include <stdio.h>
int main()
{
 printf("%s\n", "hello C");
 printf("hello c");
 return 0;
}
//两个printf效果一样
C语⾔字符串中⼀个特殊的知识,就是在字 符串的末尾隐藏放着⼀个 \0 字符,这个 \0 字符是字符串的结束标志。
对于字符串"abcdef",我们实际上看到了6个字符:a,b,c,d,e,f,但是实际上在末尾还隐藏⼀个 \0
转义字符, \0 是字符串的结束标志。所以我们在使⽤库函数 printf() 打印字符串或者
strlen() 计算字符串⻓度的时候,遇到 \0 的时候就⾃动停⽌。
# include <stdio.h>
int main ()
{
char arr1[] = { 'a' , 'b' , 'c' };     //arr1 数组中存放 3 个字符
char arr2[] = "abc" ;            //arr2 数组中存放字符串
printf ( "%s\n" , arr1);
printf ( "%s\n" , arr2);
return 0 ;
}
运行结果:
我们可以看到, arr1 字符数组在打印的时候,打印了 a b c 后还打印了⼀些随机值,这就是
因为 arr1 在末尾的地⽅没有 \0 字符作为结束标志,在打印的时候没有停⽌。
但是 arr2 的打印就是完全正常的,就是因为 arr2 数组是使⽤字符串常量初始化的,数组中有 \0
作为技术标志,打印可以正常停⽌。
我们可以对arr1进行修改
char arr1[] = { 'a' , 'b' , 'c' , '\0' };    //添加了\0就可以正常运行了

转义字符

首先,什么是转义字符?

在字符中有⼀组特殊的字符是转义字符,转义字符顾名思义:转变原来的意思的字符。

eg:字符n

当是   printf("abcndef");  时输出为  abcndef

但当为  printf("abc\ndef"); 时结果为 

\n 是⼀个转义字符表⽰换⾏的意思,我们可以简单的理解为 \ n 的意思 发⽣了转变, n 本来是
⼀个普通的字符,被 \ 转义为换⾏的意思。
\' :⽤于表⽰字符常量'
\" :⽤于表⽰⼀个字符串内部的双引号
\\ :⽤于表⽰⼀个反斜杠,防⽌它被解释为⼀个转义序列符。
\a :警报,这会使得终端发出警报声或出现闪烁,或者两者同时发⽣。
\b :退格键,光标回退⼀个字符,但不删除字符。(但是当\b之后有其他字符时,就会覆盖\b前一个字符)
\n :换⾏符。
\r :回⻋符,光标移到同⼀⾏的开头。(和\b有一样的效果)
\t :制表符,光标移到下⼀个⽔平制表位,通常是下⼀个8的倍数。
下⾯2种转义字符可以理解为: 字符的8进制或者16进制表⽰形式
\ddd :d d d表⽰1~3个⼋进制的数字。 如: \130 表⽰字符X(将八进制的130转换成十进制的数为88,那么88对应的字符是x)
\xdd :d d表⽰2个⼗六进制数字。 如: \x30 表⽰字符0(十六进制的30转换成十进制的数为28,那么48对应的字符是0,为什么只有两个dd呢?因为两位十六进制的数就可以把ascii码值是123以内的全部表示完,所以不需要三个d)
\0 :null 字符,代表没有内容, \0 就是 \ddd 这类转义字符的⼀种,⽤于字符串的结束标志,其
ASCII码值是0
转义字符参考: https://zh.cppreference.com/w/c/language/escape
  • 23
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值