我们上节说到了数组,在C语言中,并没有定义字符串这种类型,也没有字符串这种变量,,字符串是存放在字符型数组中的。在C语言函数库中,提供了一些专门处理字符串的函数。今天介绍几种常用的函数。
1、puts函数--输出字符串函数
形式:
puts(字符型数组名)
作用:将一个字符串连续的输出的终端;
举例:假定已经定义一个字符型数组arr;且该数组已经被初始化为:“China”,则利用puts函数输出字符串的形式为:
char arr[]={"China"};
puts(arr);
输出:
China
2、gets函数---输入字符串函数
形式:
get(字符型数组名)
作用:从终端输入一个字符串到字符型数组中去,并且得到一个函数值。该函数值是字符数组的起始地址。
举例:创建一个字符型数组arr,向数组中输入字符串“China”;则利用gets函数输入的形式为:
char arr[20];
gets char(arr);
在键盘输入:China
注意:1、此时向数组中传送6个字符,并非5个(包括'\0');
2、输入函数gets、输出函数puts只能输入或者输出一个字符串,不能写成
puts(arr1,arr2);或gets(arr1,arr2);
3、strcat函数---字符串连接函数
形式:
strcat(字符数组名1,字符数组名2)
作用:把两个字符数组中的字符串连接起来,把字符串2接到字符串1的后面,结果都放在字符串1中,函数调用后得到一个函数值,该函数值是字符数组1的起始地址;
举例:
char arr1[20]={“welcome to”};
char arr2[10]={"China"};
printf("%s",strcat(arr1,arr2));
输出:
welcome to China
连接情况如图所示:
注意:1、字符数组arr1必须足够大,这样才能再次容纳连接后新的字符串。
2、连接前,两个字符串的后面都有\0,连接时将字符串1后面的\0取消,只保留新的字符串后面的\0;
4、strcpy和strncpy函数---字符串复制函数
形式:
strcpy(字符数组名1,字符数组名2)
作用:将字符串2的内容复制到字符串1中去。
举例:
char arr1[10],arr2[]={"China"};
strcpy(arr1,arr2);
结果:
注意:
1、字符串1的长度不能小于字符串2的长度;
2、strcpy(字符数组名1,字符数组名2)中,字符数组2可以是一串字符串,而字符串1必须是数组名。
3、不能用赋值语句将一个字符串常量或字符串数组直接给另一个字符串数组,因为字符数组的数组名是一个地址,只能通过复制函数进行传递;
4、可以用strncpy函数将字符串2中前n个字符复制到数组1中,但n的大小不能大于字符串1的长度;
例如:
char arr1[10],arr2[]={"China"};
strncpy(arr1,arr2,3);
结果:
5、strcmp函数---字符串比较函数
形式:
strcmp(字符数组名1,字符数组名2)
作用:比较字符串1和字符串2;
举例:
strcmp(arr1,arr2);
strcmp(arr1,"China");
strcmp("chain","China");
意义:将两个字符串自左向右逐字符比较,直到出现不同的字符或者\0为止;如果字符串都是英文字母,则在英文字典中位置靠后的字母大;
比较的结果有函数值带回:
如果两个字符串相同,则函数值为0;
如果字符串1>字符串2,则函数值为一个正数;
如果字符串1<字符串2,则函数值为一个负数;
6、strlen函数---测字符串长度函数
形式:
strlen(字符数组名)
作用:测试字符串长度的函数,函数的值为字符串的实际长度(不包含\0)
例如:
char arr[10]={"China"}
printf("%d",strlen(arr));
输出结果为:5
7、strlwr函数---转换小写函数
形式:
strlwr(字符数组名)
作用:将字符串中大写字母换成小写字母;
8、strupr函数---转化大写函数
形式:
strupr(字符数组名)
作用:将字符串中小写字母转化为大写字母;
9、字符数组的输入和输出
字符数组的输入输出有两种形式:
1、逐字符输入,采用格式符"%c"输入或输出一个字符;
2、将整个字符串一次输入和输出,用”%s“格式符,意思是对字符串的输入输出,输出是,遇到结束符'\0’就停止输出。
例如:
char arr[]={"China"};
printf("%s"\n,arr);
结果:
输出:China
总结:字符数组是数组部分较为麻烦的部分,大多数初学者对于字符数组的使用都不好把握,这节的主要内容就是对字符数组的一个详细介绍,主要包括常用数组函数的介绍。
创作不易,还请大家多多支持。