字符串函数
-
strlen 函数
size_t strlen ( const char * str );
- size_t 返回无符号数
- 字符串已’\0’作为结束标志,strlen函数返回的是在字符串中’\0’前面出现的字符个数(不包含’\0’)
在这里顺便区分一下strlen函数和sizeof函数的区别
用代码来描述:
#include<stdio.h>
#include<string.h>
int main(void)
{
char arr1[] = "abc";
char arr2[] = {'a','b','c'};
printf("%d\n",sizeof(arr1)); //4 sizeof计算arr所占空间的大小 4个元素 char 3*1=3 此时计算包括\0
printf("%d\n",sizeof(arr2));//3 没有\0
printf("%d\n",strlen(arr1)); //3 strlen 计算字符串的长度 即'\0'之前的字符个数
printf("%d",strlen(arr2)); // 随机值 因为不知道什么时候遇到\0
return 0;
}
- strstr 函数
const char * strstr ( const char * str1, const char * str2 );
- 判断str2指向的字符串是否是str1指向的字符串的子串
- 在str1中寻找str2,如果找的到,则返回str2第一个字母的地址,如果找不到,则返回0
-
strcat函数 字符串追加
char * strcat ( char * destination, const char * source );
-
源字符串必须以’\0’结束
-
目标空间必须足够的大,能容纳的下源字符串的内容
-
目标空间必须可修改
#include<stdio.h>
#include<string.h>
int main(void)
{
char arr1[20] = "hello";
char arr2[] = "world";
strcat(arr1, arr2);
printf("%s", arr1);
return 0;
}
- strncat函数
char * strncat ( char * destination, const char * source, size_t num );
num 中写出需要追加字符串的长度
#include<stdio.h>
#include<string.h>
int main(void)
{
char arr1[20] = "hello";
char arr2[] = "world";
strncat(arr1, arr2, 3);
printf("%s", arr1);
return 0;
}
strcat与strncat在使用时
使用strcat函数不能是自己追加自己,而strncat函数可以
-
strcpy函数 字符串拷贝
char * strcpy ( char * destination, const char * source );
-
源字符串必须以’\0’结束。
-
会将源字符串的’\0’拷贝到目标空间
-
目标空间必须足够大,以确保能存放源字符串
-
目标空间必须可变
#include<stdio.h>
#include<string.h>
int main(void)
{
char arr1[20] = "hello";
char arr2[] = "world";
strcpy(arr1, arr2);
printf("%s", arr1);
return 0;
}
- strncpy函数
char * strncpy ( char * destination, const char * source, size_t num );
- 拷贝num个字符从源字符串到目标空间
- 如果源字符串的长度小于num,则拷贝完源字符串后,在目标的后面追加0,直到num个
- strcmp函数 字符串的比较
int strcmp ( const char * str1, const char * str2 );
标准规定:
第一个字符串大于第二个字符串,则返回大于0的数字;
第一个字符串等于第二个字符串,则返回0;
第一个字符串小于第二个字符串,则返回小于0的数字。
#include<stdio.h>
#include<string.h>
int main(void)
{
char arr1[20] = "hello";
char arr2[] = "hella";
int ret = strcmp(arr1, arr2);
printf("%d", ret);
return 0;
}
8. strncmp 函数
int strncmp ( const char * str1, const char * str2, size_t num );
比较到出现另个字符不一样或者一个字符串结束或者num个字符全部计较完