包括 strlen, strcpy, strcmp, strcat, strstr。
前言
这里介绍的只是一部分,剩下的小编会继续在以后的文章中详写。
一、各种函数的大致介绍
我们首先介绍的函数包括strlen,strcpy,strcmp,strcat,strstr,strncpy,strncmp,strncat函数。
- strlen:是求字符串的长度。
- strcpy:是字符串拷贝函数。
- strcmp:是字符串比较函数。
- strcat: 是字符串追加函数。
- strstr:是找子串函数。
二、函数的详细介绍
strlen函数
求相应的字符串的长度,例如“abcdef”,求这个字符串的长度,用strlen("abcdef")可得出有6个字符,在这里注意strlen求的是 \0 之前的字符串的长度。
同时注意要引用库函数#include<string.h>
#include<stdio.h>
#include<string.h>//这里是调用字符串函数所需要的库函数
int main()
{
char arr[20] = "abcdef";
int num = strlen(arr);
printf("%d\n",num);
return 0;
}
strcpy函数
字符串拷贝函数,将一个字符串拷贝到另一个字符串之中。
例如: 这儿有
char str1[20] = "abcdef";
char str2[20] = "hello";
strcpy(str1,str2);//注意这里的前后顺序,后面的str2是需要拷贝的字符串。
//1. 这里将str2覆盖到str1之中,此时的str1[20]就变成了hello。
//2.注意str2中的‘\0’也拷贝到了str1之中。
#include<stdio.h>
#include<string.h>//同样需要库函数
int main()
{
char str1[20] = "abcdef";
char str2[10] = "hello";
strcpy(str1,str2);
printf("%s\n",str1);
return 0;
}
strcmp函数:
字符串比较函数,用于比较两个字符串的大小,我们知道字符串之间的比较是不能像整数那样运用大于,小于或者等于来比较的。
我们来举个例子:
char str1[20] = "abcdef";
char str2[20] = "abcd";
strcmp(str1,str2);//运用这个函数,我们可知str1大于str2的,这是就会返回一个大于0的数。
char str1[20] = "abcdef";
char str2[20] = "abcd";
strcmp(str2,str1);//而这个时候就会返回一个小于0的数。
char str1[20] = "abcdef";
char str2[20] = "abcdef";
strcmp(str1,strt2);//这时候函数会返回一个等于0的数。
#include<stdio.h>
#include<string.h>
int main()
{
char str1[20] = "abcdef";
char str2[20] = "abcd";
int ret = strcmp(str1,str2);//函数会返回相应的值,ret用于接收。
if(ret>0)
{
printf("str1 > str2\n");
}else if(ret<0)
{
printf("str1 < str2\n");
}else
{
printf("str1 = str2");
}
return 0;
}
strcat函数 :
字符串追加函数,在一个字符串后面追加另一个字符串。(是追加不是覆盖)。
例如:
char str1[20] = "abcdef";
char str2[20] = "abcd";
strcat(str1,str2);//这表示在str1后面追加str2,也就是在str1后面加上str2字符串,这样结果就变成了str1[20] = "abcdefabcd"。
需要注意的是追加,不是像strcpy那样覆盖,把str1的值变成str2,而是在str1的后面追加str2.
同时值得注意的是在追加的时候,将 \0 也追加了过去。
#include<stdio.h>
#include<string.h>
int main()
{
char str1[20] = "abcdef";
char str2[20] = "abcd";
strcat(str1,str2);
printf("%s\n",str1);
return 0;
}
strstr函数:
在目标串中找子串,也就是可以判断一个字符串是否是另一个字符串的子串。
如果一个字符串是另一个字符串的子串,函数就会返回一个不为 0 的数。
如果不是,则函数就会返回一个 0 。
如果用指针,函数返回值为空,则就子串不匹配。
同时也可以打印子串初始出现的位置往后的字符串,也就是既可以判断,也可以打印。
若用于打印,例如:
char str1[20] = "abcdef";
char str2[20] = "bcd";
char *p = strstr(str1,str2);//我们知道从b开始str2和str1中的串相匹配,这时就会打印str1中从b开始包括b往后的字符串,就会打印 bcdef。
若是创建临时变量接收函数(用于判断)
#include<stdio.h>
#include<string.h>
int main()
{
char str1[20] = "abcdef";
char str2[20] = "abmm";
int ret = strstr(str1,str2);
if(ret == 0)
{
printf("不匹配\n");
}else
{
printf("匹配成功\n");
}
return 0;
}
若是用指针(用于判断)
#include<stdio.h>
#include<string.h>
int main()
{
char str1[20] = "abcdef";
char str2[20] = "abmm";
char* ret = strstr(str1,str2);
if(ret == NULL)
{
printf("不匹配\n");
}else
{
printf("匹配成功\n");
}
return 0;
}
打印母串中子串初始位置以后的字符串 (首次出现为准)
#include<stdio.h>
#include<string.h>
int main()
{
char str1[20] = "abcdef";
char str2[20] = "bcd";
char* ret = strstr(str1,str2);
if(ret == NULL)
{
printf("不匹配\n");
}else
{
printf("%s\n",ret);
}
return 0;
}
总结
在这里我们先介绍这几个字符串操作函数,更多的字符串操作函数,小编会在以后的作品中持续的更新,当然这里也是大致的介绍,更深层次的理解,小编也会在后面单独对每个字符串函数进行详细的讲解。