13.6 字符串
考点15 字符串的表示
由于没有字符串变量,所以用一维字符数组表示字符串,其定义、初始化均与一般的数组相仿。
如果在声明字符数组的同时初始化数组,则可以不规定数组的长度,系统在存储字符串常量时,会在串尾自动加上一个结束标识‘\0’。结束标识在字符数组中也要占用一个元素的存储空间,因此在声明字符数组的长度时,要预留出该字符的位置。
当然还可以采用循环语句进行输入输出,程序如下:
#include<stdio.h>
void main(){
char a[2];
scanf("% s",a);/* 或者用gets(a)进行输入操作* /
printf("% s\\n",a);/* 或者用puts(a)进行输出操作* /
}
输入:ab
输出:ab
题型剖析:字符串及其数组元素的引用在上机中的考查形式如下。
(1)字符与字符常量的表示形式及输出形式,字符常量用(' '),输入输出时使用格式字符“%c”;字符串与字符串常量的表示形式及输出形式分别为“”和“%s”。
(2)字符串结束标识‘\0’。根据‘\0’来判断字符串是否结束,例如:
for(i=0;str[i]!='\0';i++)
考点16 指向字符串的指针
定义格式:
char* 指针变量
初始化方法:
char*p =“abc”;
使用方法
while(*p){}
注意:只有字符数组才可以应用数组名称直接将整个数组中的元素输出,其他类型的数组不具备这种特征。
题型剖析:
(1)填空题中,常常要求根据函数的调用,写出参数中字符串指针的正确形式。如:a,b是两个数组,对于函数void fun (char*a,char*b),其调用形式为fun(a,b)。
(2)使用指针对字符串进行操作。
例如,字符串s="hello",指针p指向字符串s,要求将字符串中的字母‘l’转换或字符‘a’,程序如下:
while(p)
{ if(*p=='l')
*p='a';
p++;
}
考点17 字符串处理函数
(1)strcpy()字符串复制函数
例如:char a[] = "abc";
char b[] = "b";
strcpy(a,b);/* 调用结束后,a = "b"* /
C语言中不可以应用“=”直接将一个字符串的值复制给另外一个字符串,但可以用库函数中的strcpy()函数来实现。
(2)strcat()字符串连接函数
例如:char a[] = "abc";
char b[] = "b";
strcat(a,b);/* 调用结束后,a = "abcb"* /
(3)strlen()字符串长度函数(从起始指针到\0处为止的字符总数)
例如:char a[100] = "abc";
int b = strlen(a);/* 调用后b = 3 */
(4)strcmp()字符串比较函数
例如:char a[] = "abc";
char b[] = "b";
int c = strcmp(a,b);/* 调用结束后,c = -1 * /
即按字典序排列,靠后的字符串比较大。a<b,返回-1;a>b,返回1;如果两个字符串相同,则返回0。
题型剖析:这里主要是牢记各个函数的功能和调用方法。字符串处理函数可以方便的对字符串进行处理,在上机过程中,熟练使用字符串处理函数(除非题目要求不能使用),可以大大减少我们的工作量。