阳光沙滩
让学习编程变得简单
C语言入门(8)
发表于 2020-03-26    阅读次数 211

字符串

字符串的储存与初始化

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'

例程: 图片描述

字符数组的连接strcat

图片描述