C语言中的字符串和转义字符

一.字符串

c语言中没有字符串类型

字符串:由双引号引起来的一串字符 例:"hello world"

注意:字符串的结束标志是\0 不算作字符串的内容

字符串中’\0’的作用

例;

char arr1="abc";//用一个字符串初始化一个字符数组
char arr2[3]={'a','b','c'};

调试发现:
arr1数组中的内容有a b c \0
arr2数组中的内容有a b c

然后分别打印这两个数组

printf("%s\n",arr1);
printf("%s\n",arr2);

结果arr1打印出来abc

arr2打印出来abc加随机值

原因是arr1存储的内容有\0,遇到\0会停止,而arr2中a b c之后存储的内容我们并不知道,会继续打印,直到遇到\0为止

结论就是:

\0是字符串的结束标志,如果一串字符串最后没有出现\0,就会出现随机值,直到出现\0

补充:
在这里插入图片描述
当arr2中有\0,遇到\0就会停止打印

二.用strlen函数求字符串长度

strlen函数求字符串长度要引用#include <string.h>
它计算的是\0之前出现的字符的个数

例:
在这里插入图片描述

arr2打印出来的15是随机值
当改为 char arr2[]={‘a’,‘b’,‘c’,‘\0’};,结果才是3

三.转义字符(转变原来的意思)

注意:转义字符只能使用小写字母,每个转义字符只能看作一个字符

在这里插入图片描述

\?–>写连续多个问号时使用,防止被解析成三字母词
\'–>表示字符常量 ’
\"–>表示一个字符串内部的双引号
\\–>表示一个反斜杠
\a–>警告字符 蜂鸣
\b–>退格符
\n–>换行符
\r–>回车
\t–>水平制表符(一般相当于4个空格,或者tab键的功能)
\v–>垂直制表符
\ddd–>ddd表示1-3个八进制的数字 将8进制数ddd转换成10进制数所对应的ascii码值所对应的字符
\xdd–>dd表示2个十六进制的数字 将16进制数dd转换成 10进制数所对应的ascii码值所对应的字符

在这里插入图片描述

注意:单引号,双引号,反斜杠是特殊的字符,不能直接表示
例:
当我们要打印字符

printf("%c",'\'');
//这个的结果是 ’
printf("%s","\"");
//这个的结果是 “

当我们要打印 \ 时

printf("%c",'\\');

一道面试题:

要打印出  c:\test\\test.c
应该写成 printf("c:\\\test\\\\test.c");
//当我们写成这样时
printf("%s\n","c:\test\\test.c");
//结果是
//c:      est\test.c

补充:
printf(“%c\n”,‘\130’);
\130代表的是把130这个八进制数字转换成10进制后得到的88,作为ascii码值代表的字符
printf(“%c\n”,\x31);
代表的是把31这个16进制的数字转换成10进制后得到的49,作为ascii码值代表的字符

一道面试题:

printf("%d\n",strlen("c:\\test\\628\\test.c"));

结果是14

这14个字符分别是c : \t e s t \62 8 \t e s t . c

因为8进制数字中不应该有8,所以8作为一个单独的字符,\62被解析成一个单独的字符

注意:\62\062一样的

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值