一.字符串
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
是一样的