字符串
字符串是由多个字符组成的值。
在C语言中,字符串与单个字符是有严格区分的,单个字符用单引号括起来,字符串则用双引号,单个字符的占位符为%c,字符串的占位符为%s。比如:
'a'
"abc"
注:%s也可以用来表示单个字符。
创建一个字符串变量和创建其它变量的方式有所不同,在C语言中要用到字符数组。
数组:由一组相同类型的元素组成的集合叫做数组
char ass[] = "abc"; //创建一个abc的字符串
char是字符型变量的创建函数,ass为字符数组名,[]表示长度。[]里的数字表示该数组由多少个元素组成,当[]内不填入任何数字时,系统会自动根据后面给出的元素数量来计算数组的长度。
在字符串中,表示字符串终止的转义字符为“\0”。创建完一个字符串后,系统一般会自动在末尾添加"\0","\0"是隐藏的。
char ass[] = "abc\0"; //与上面的代码是等价的。
创建字符串还可用下面的方式:
char ass[] = {'a','b','c','\0'};
结果与上述代码相同。该定义方式是将ass数组中的元素逐个给出。当采取这样的定义方式时,末尾必须加入’\0’。
当没有加入’\0’时,假设使用printf打印ass,会发现系统打印abc后出现了一堆看不懂的乱码。实际上是系统由于没有‘\0’的终止而在打印abc后在内存中继续打印,直到遇到内存数据中的另一个’\0’的结果。
在C语言中,计算字符数组长度的函数为"strlen",它是string(字符串)和length(长度)两个单词缩写的结合。使用它可以获取数组含有的元素的数量。
注意:在使用strlen函数之前,必须先声明引用头文件string.h,即在文件开头写入:
#include <string.h>
同时,“\0”是隐藏的,计算字符串长度时不会算入它。
使用strlen时,需要用到()。
strlen(ass); //计算数组ass的长度
一般有两种用法
int main()
{
char ass[] = "abc";
int L = strlen(ass); //将ass数组的长度赋予变量L
printf("%d",L); //输出3
int C = strlen("abcdefg"); //计算abcdefg字符串长度并存储
printf("%d",C); //输出7
return 0;
}
转义字符
在C语言中,有一些字符串的含义与它原本的意思不一样,这些字符串叫做转义字符。
int main()
{
printf("\n"); //不会打印\n,而是直接空格。
return 0;
}
常见的转义字符有:
\n //换行
\' //表示字符'
\" //表示字符"
\\ //表示字符'\'
\a //警告字符,会产生蜂鸣
\ddd //计算一个三位的八进制数字,并转为十进制
\xdd //计算一个两位的十六进制数字,并转为十进制
其中,\ddd的d表示八进制数字。如\123。
\xdd中的d表示十六进制数字,如\x15。
计算:
int main()
{
printf("%d\n","\123"); //\n防止两个数字混在一起
printf("%d","\x15");
return 0;
}
扩展:printf函数实际上还具有强制转换数据类型的功能。
将上面代码中的%d整型占位符换为%c字符占位符或%s字符串占位符:
int main()
{
printf("%s\n","\130");
printf("%s","\x10");
return 0;
}
那么输出的将会是计算出的数字所对应的ASCII码表字符。