字符串
字符串的储存与初始化
1,char类型的变量只能储存单个字符,引用单个字符要使用单引号(' ').比如:
char c1 = 'a';//right char c2 = "a";//error! char c3 = 'ab'; char c4 = '';
转义字符:.它不表示可见字符反斜杠,它与后面字符连起来表示一个字符。比如:
char c1='\n';//表示换行的功能 char c2='\t';//表示制符表功能 char c3='\';//表示字符反斜杠 char c4=''';//表示字符单引号
多字符由单个字符组成,组成数组,称为字符串。比如:
char s[100];//数组定义 s[100]="hello";数组初始化,a[0]~a[5]分别是'H','e','l','l','o','\0';
'\0'的作用;用来标记字符串的结束。如果数组中没有'\0',字符串数组就不会停止,操作的时候就会报错;
字符数组的初始化如图:
以上三种写法均可对字符数组初始化;虽然第二第三种没有敲上'\0'.但事实上它是存在于字符数组中的,一定要留多一位字符空间供'\0'使用;
字符串的输入输出
字符串的输入
字符串输入无取地址符&
由于应用程序需要经常对字符串进行输入输出操作,因此C语言的scanf,printf对字符串做了特殊处理。格式占位符为%s.比如:
char a[100]; scanf("%s",a); /* 注意这里并不需要取地址符号!!! 只有字符串不需要取地址符号,但是数组要取地址符号。 */ 这样的输入会自动添加'\0',程序员就不用手动添加数组后面的'\0'.
字符串中scanf不接受空格字符,例如:
char ch[100]; scanf("%s",ch); 假设输入的是 Hello World,字符串ch只能接受到 "Hello"
如果要接收到空格字符,可以用gets,例如: char ch[100]; gets(ch);
字符串的输出
逐个输出
字符串整体输出
常用的字符处理函数
计算字符串的长度
通常我们计算数组使用长度是这样子的:
事实上C语言有处理字符串的函数,使用函数时需要在程序开头加上 #include<string.h>.计算字符串长度可以这样:
strlen表示计算字符串长度,str是头文件的简称,len是长度length的简称。 格式:strlen(字符数组名);//求字符串长度
字符串的复制
两个字符串复制不能使用"="用strcpy。
该注意的是,d最起码要等于s的长度。 我们亦可以使用str给数组赋值:
字符数组的比较strcmp(compare)
比较原则:先比较首字符的ASC||码,若首字符相同,比较下一个字符的ASC||,直到“决出胜负”为止,例如: "abc">"ABC",因为首字符'a'>'A' "abc">"abC",因为前面两个相同,而'c'>'C' "abc"<"abcd",前面相同,但前面数组最后一个与后面数组的最后一个无法比较,(前无,后有) "345">"3440"数组第三个'5'>'4'
例程: