文章目录
- 前言
- 一、什么是字符串?
- 二、七个孪生兄弟
- [ 1 ].==strlen()==
- [ 2 ].==strcpy()==
- [ 3 ].==strcat()==
- [ 4 ].==strcmp()==
- [ 5 ].==strchr() strstr()==
- [ 6 ].==strlwr()==
- [ 7 ].==strupr()==
- 三、回顾
前言
C语言一经出现就以其功能丰富,表达能力强,灵活方便,应用面广等特点迅速在全世界普及和推广,很多人都开始了学习C语言。本文就介绍了C语言的易混乱知识
——字符串函数。
注意:使用字符串处理函数时,要添加#include<string.h>头文件。
一、什么是字符串?
字符串或串 (String)是由数字、字母、下划线组成
的一串字符。一般记为 s=“
a1a2···an”
(n>=0)。
------------------------------------------------------------------------------------------------------------------------------------------------------
二、七个孪生兄弟
strlen()//计算字符串长度
strcpy() strncpy() //字符串的拷贝
strcat() //字符串的拼接
strcmp() //字符串的比较
strchr() strstr() //字符串的查找
strlwr() //字符串转为小写
strupr() //字符串转为大写
[ 1 ].strlen()
形式:strlen(字符串)
作用:测量字符串长度。函数值为“字符串”的实际长度,不包括\0在内。
代码示例:
#include<stdio.h>
#include<string.h>
int main()
{
char str[20]="China";//字符串实际长度为5
printf("%d\n",strlen(str));
return 0;
}
输出的结果不是20,也不是6,而是5。
------------------------------------------------------------------------------------------------------------------------------------------------------
[ 2 ].strcpy()
形式:strcpy(字符数组1,字符串2)
作用:将字符串2复制到字符数组1中。
字符数组1必须定义得足够大,以便能容纳被复制的字符串,且字符数组1必须是数组名形式或字符型指针变量。
代码示例:
#include<stdio.h>
#include<string.h>
int main()
{
char str1[]={"0"};
char str2[]={"0"};
strcpy(str1,"China");
strcpy(str2,str1);
printf("str1:%s\n",str1);
printf("str2:%s\n",str2);
return 0;
}
程序运行:先把China字符串复制给str1,再把str1复制给str2,因此打印str1和str2的结果都是China字符串。
------------------------------------------------------------------------------------------------------------------------------------------------------
[ 3 ].strcat()
形式:strcat(字符数组1,字符数组2)
作用:连接两个字符数组中的字符串。
把字符串2连接到字符串1的后面,结果放在字符数组1中。
代码示例:
#include<stdio.h>
#include<string.h>
int main()
{
char str1[]="ab";
char str2[]="cd";
strcat(str1,str2);//strcat把字符串2连接到字符串1的后面
printf("%s\n",str1);
return 0;
}
------------------------------------------------------------------------------------------------------------------------------------------------------
[ 4 ].strcmp()
形式:strcmp(字符串1,字符串2)
作用:字符串比较的函数
因为字符串不能用等号来比较大小,所以就用strcmp函数来比较。
如果字符串1等于字符串2,函数返回值为0;如果字符串1大于字符串2,返回值为一正数;如果字符串1小于字符串2,返回值为一负数。
代码示例:
#include<stdio.h>
#include<string.h>
int main()
{
char str1[]="abcde";
char str2[]="abcde";
char str3[]="abcd";
char str4[]="bcde";
printf("%d\n",strcmp(str1,str2));
printf("%d\n",strcmp(str1,str3));
printf("%d\n",strcmp(str3,str4));
return 0;
}
另外,对于两个字符串比较时不能用if (str1= =str2),只能用if (strcmp(str1,str2)= =0).
------------------------------------------------------------------------------------------------------------------------------------------------------
[ 5 ].strchr() strstr()
形式:strstr(字符串1,字符串2)
作用:查找字符串的函数
函数用于判断字符串str2是否是str1的子串。如果是,则该函数返回str2在str1中首次出现的地址;否则,返回NULL。
如果找到该字符串,就会从找到的地方开始输出
代码示例:
#include <stdio.h>
#include<string.h>
int main(){
char a[] = "abcdefg";
char b[] = "bc";
char* ret = strstr(a, b);
if (ret == NULL){
printf("Can not find!\n");
}
else{
printf("%s\n", ret);
}
return 0;
}
------------------------------------------------------------------------------------------------------------------------------------------------------
[ 6 ].strlwr()
形式:strlwr(字符串)
作用:将字符串转换成小写字母
代码示例:
#include<stdio.h>
#include<string.h>
int main()
{
char str[]="aAbBcCdD";
strlwr(str);
printf("%s",str);
return 0;
}
------------------------------------------------------------------------------------------------------------------------------------------------------
[ 7 ].strupr()
形式:strupr(字符串)
作用:将字符串转化成大写字母
代码示例:
#include<stdio.h>
#include<string.h>
int main()
{
char str[]="aAbBcCdD";
strupr(str);
printf("%s",str);
return 0;
}
------------------------------------------------------------------------------------------------------------------------------------------------------
三、回顾
strlen()//计算字符串长度
strcpy() strncpy() //字符串的拷贝
strcat() //字符串的拼接
strcmp() //字符串的比较
strchr() strstr() //字符串的查找
strlwr() //字符串转为小写
strupr() //字符串转为大写