字符串处理
与字符串有关的内置函数在头文件<string.h>
1.库函数strlen()
size_t strlen(char const* string)
//测试字符串长度的函数
函数的值为字符串的实际长度,注意:不包括'\0'在内
size_t strlen(char const *string)
{
int length = 0;
for(length = 0;*string++!= '\0')
length+=1;
}
注意:size_t 为无符号整形,其头文件在stddef.h中
#include<stdio.h>
int main()
{
// char str[] = "string1"
char str[100] = "string";
unsigned int n;
n = strlen(str);
printf("n = %d\n",n);
printf("sizeof(str) = %lu\n",sizeof("string1"));
printf("sizeof(str) = %lu\n",sizeof(str1));
return 0;
}
2.strcpy()
char *strcpy(char *dst,char const *src)
复制时,dst必须足够大,复制时连同'\0'一起复制
3.strcmp()
int strcmp(char const *s1,char const *s2)
(1)相等,返回0
(2)s1>s2 返回正整数
(3)s1<s2返回负整数
4.strcat()
char *strcat(char *dst,char const *src)
将源字符串连接到目的字符串的后面,目的字符串要足够大,连接时将字符串1末尾的'\0'取消,在新字符串后保留'\0'
以上四个函数为不受限的字符串库函数
而不受限的字符串库函数:
strncpy() strncat() strncmp()
5. strncpy()
char *strncpy(char *dst,char const *src,size_t len)
将src前面的len个字符复制到字符数组dst中,len不应大于字符数组dst中原有的字符,不包括'\0',如果len>strlen(src),则用'\0'填充到n长度,若len<strlen(src),则只有n个字符被复制到字符数组中,注意:结果不会以‘\0'字节结尾,因此需要在最后人工添加'\0'
6. strncat()
char *strncat(char *dst,char const *src,size_t len);
从src中最多复制len个字符到目标数组后面,strncat总是在结果字符串后面添加一个'\0'
7.strncmp()
int strncmp(char const *s1,char const *s2,size_t len)
最多比较len各字符
8.strchr()和strrchr()
char *strchr(char cosnt *Str,int ch)
strchr()在字符串str中查找字符ch第一次出现的位置,找到后返回返回一个指向该位置的指针
char *strrchr(char const *str,int ch)
strchr()在字符串str中查找字符ch最后一次出现的位置,找到后返回返回一个指向该位置的指针
9.strpbrk()
char *strpbrk(char const *str,char const *group)
查找第一个匹配group中任何一个字符,函数返回指向str中第1个匹配group中任何一个字符的字符位置的指针,若为找到匹配,则返回null指针
char string[20] = "hello there honey";
char a[] = "aiou";
char *ans;
ans = strpbrk(string,a);
*(ans + 1) = '\0';
printf("%s\n",string);