C语言中的字符串和转义字符
C语言中的字符串
我们知道,c语言中的数据类型有short、int、long、char、float、double六种,但是没有字符串类型,如果我们要表达一串字符那么应该怎么做呢?
比如abc我们可以表示为"abc",字符串可以放入数组:
char arr1[] = "abc"; char arr2[] = { 'a','b','c' }; printf("arr1 = %s\n", arr1); printf("arr2 = %s\n", arr2);
可见,有两种表示形式,那么这两种输出的结果是否相同,且看:
可见arr2的结果除了abc还另外出现了烫烫烫...类似于乱码的东西。原因是,arr1中的"abc"---'a','b','c','\0',最后一个的\0是一个转义字符,是字符串的结束标志,其值是0,在计算字符串长度时\0是结束标志,不能算字符串内容,而arr2中则没有\0的表示。
修改一下代码,给arr2加上'\0':
char arr1[] = "abc"; char arr2[] = { 'a','b','c','\0'}; printf("arr1 = %s\n", arr1); printf("arr2 = %s\n", arr2);
输出结果完全相同:
接下来打印一下arr2不加'\0'时的二者的长度,看是否相同:
char arr1[] = "abc"; char arr2[] = { 'a','b','c'}; printf("%d\n", strlen(arr1)); printf("%d\n", strlen(arr2));
输出结果:
其中arr1的结果毋庸置疑,那么arr2的结果为什么是15呢,原因就是因为arr2没有定义'\0',使得arr2的长度是一个随机值 即arr2:a b c .......直到遇到\0。
如果再给arr2加上‘\0’:
char arr1[] = "abc"; char arr2[] = { 'a','b','c','\0'}; printf("%d\n", strlen(arr1)); printf("%d\n", strlen(arr2));
输出结果:
长度也就完全一样了。
C语言中的转义字符
有这么一个路径:c:\test\32\test.c,现在我们要让它在控制台显示出来,应该怎么做呢?
直接使用双引号括住:
printf("%s\n", "c:\test\32\test.c");
(Note:c语言中%d打印整型, %c打印字符,%s打印字符串, %f打印浮点型数字==小数,%p以地址的形式打印, %x打印十六进制数字,%lf打印双精度浮点数... )
结果如下:
可见,与我们所需要的有很大的差别,原因是‘\’使得‘\’+‘后面的字符’构成了一个转义字符,即\t---水平制表符,\32---八进制数字32,我们再来看一下这串内容的长度:
printf("%d\n", strlen("c:\test\32\test.c"));
长度为13,本来应该是17的,但却是13,原因就是因为‘\’+‘后面的字符’构成的转义字符独占一位,即\t是一位,\32是一位,\t又是一位,现在再数一下,正好13位。
如果我们想要完美的输出c:\test\32\test.c这串字符的话,就需要在‘\’的前面再加上一个‘\’,防止其和其后面的字符被解释为一个转义序列符,我们修改一下代码:
printf("%s\n", "c:\\test\\32\\test.c");
输出结果:
很完美,再看一下长度:
printf("%d\n", strlen("c:\\test\\32\\test.c"));
输出结果:
完全正确,所以,我们在输出带有‘\’的字符串时,需要在‘\’前再加上一个‘\’来防止被误认为是一个转义字符而影响输出结果。
常见的转义字符:
转义字符 | 意义 |
---|---|
\a | 警告字符 |
\b | 退格符 |
\f | 换页 |
\r | 回车 |
\n | 换行符 |
\t | 水平制表符 |
\v | 垂直制表符 |
\' | 单引号 |
\" | 双引号 |
\ | 反斜杠 |
\ddd | ddd表示1-3个八进制数字 |
\xdd | dd表示2个十六进制数字 |
- C语言中的字符串,转义字符以及注释
- 【总结】0 初识C语言 (数据类型、变量 常量、字符串+转义字符+注释)
- C语言字符串操作总结大全(超详细)
- c语言字符串处理-----压缩字符串
- C语言里的字符串解析
- (c语言)连接两个字符串
- 【C语言】【笔试题】【面试题】判断一个字符串是否为另外一个字符串旋转之后的字符串
- C语言字符串相关知识点
- 【C语言探索之旅】 第二部分第四课:字符串
- c语言中用指针来计算一个字符串的长度
- C语言定义字符串和字符数组
- C语言中--字符串相关--的重要函数
- C语言字符串操作----strlen()、strcpy()、strcat()、strcmp()
- C语言常用字符串及转换函数
- C语言中字符数组和字符串指针分析
- C语言判断字符串为空
- C语言实现一个函数,可以左旋字符串中的k个字符。
- C语言如何检查一个字符串是否全数字?
- 用c语言编写一个函数用来删除字符串中的空格并返回空格个数
- 黑马程序员——C语言------数组和字符串数组、字符串