字符串函数——葫芦七兄弟

266 阅读3分钟

文章目录


前言

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()  //字符串转为大写

在这里插入图片描述