什么是字符串库函数
编写在编译器头文件库里,要包含头文件才能调用的封装函数,且是适合字符串使用的库函数。
字符串操作
①复制
strcmp(无长度限制)
格式:char * strcpy ( char * destination, const char * source );
将source的字符串拷贝到destination上
#include<string.h>
#include<stdio.h>
int main()
{
char arr1[]="xxxxxxxxxx";
char arr2[]={'b','i','t','\0'};
strcpy(arr1,arr2);
printf("%s\n",arr1);//结果 char arr1 为 bit
return 0;
}
strncpy有长度限制,即可指定长度复制字符串)
格式:char * strncpy ( char * destination, const char * source, size_t num );
将source的字符串拷贝num个量到destination上
#include<string.h>
#include<stdio.h>
int main()
{
char arr1[] = "xxxxxxxxxx";
char arr2[] = { 'b','i','t','\0' };
strncpy(arr1, arr2,2);//复制arr2的2个字符到arr1上
printf("%s\n", arr1);//结果 char arr1 为 bixxxxxxxx
return 0;
}
②计算字符串长度
strlen(遇到\0后终止计算)
格式:size_t strlen ( const char * str );
#include<string.h>
#include<stdio.h>
int main()
{
char arr1[]="abcdef";
int ret = strlen(arr1);
printf("%d\n",ret);//结果为6
return 0;
}
③增加
strcat
格式:char * strcat ( char * destination, const char * source );
读取destination字符串的 \0处,且记录该地址,后从\0后继续读取source字符串
#include<string.h>
#include<stdio.h>
int main()
{
char arr1[20] = "Hello \0xxxxxx";
char arr2[] = "优快云";
strcat(arr1, arr2);
printf("%s\n", arr1);//结果为 Hello 优快云
return 0;
}
strncat(可指定长度)
格式:char * strncat ( char * destination, const char * source, size_t num );
读取destination字符串的 \0处,且记录该地址,后从\0后继续读取source字符串中num个字符
#include<string.h>
#include<stdio.h>
int main()
{
char arr1[20] = "Hello \0xxxxxx";
char arr2[] = "优快云";
strcat(arr1, arr2,2);
printf("%s\n", arr1);//结果为 Hello CS
return 0;
}
④比较大小
strcmp(一个一个字符比对大小)
格式:int strcmp ( const char * str1, const char * str2 );
str1 < str2时, 返回值 <0
str1 = str2时,返回值 =0
str1 > str2时,返回值 >0
#include<stdio.h>
#include<string.h>
int main()
{
char arr1[] = "abc";
char arr2[] = "abc";
int ret = strcmp(arr1, arr2);
if (ret < 0)
printf("arr1<arr2\n");
else if (ret > 0)
printf("arr1>arr2\n");
else
printf("arr1==arr2\n");
printf("%d\n", ret);
return 0;
}
strncmp
格式:int strncmp ( const char * str1, const char * str2, size_t num );
将str1与str2比较num个字符
#include<stdio.h>
#include<string.h>
int main()
{
char arr1[] = "abcdef";
char arr2[] = "abcf";
int ret = strncmp(arr1, arr2,4);
if (ret < 0)
printf("arr1<arr2\n");
else if (ret > 0)
printf("arr1>arr2\n");
else
printf("arr1==arr2\n");
printf("%d\n", ret);//结果为arr2>arr1 比较到第四个字符时 f>d
return 0;
}
查找
strstr
const char * strstr ( const char * str1, const char * str2 );
char * strstr ( char * str1, const char * str2 );
在str1中查找str2
不存在时返回NULL
int main()
{
char arr1[] = "abcdefabcdef";
char arr2[] = "cde";
char* p = strstr(arr1, arr2);
if (p == NULL)
{
printf("不存在\n");
}
else
{
printf("%s\n", p);
}
return 0;
}