【C语言_21】处理字符串的函数!

时间:2022-10-11 13:00:02

前言

使用以下函数均需要添加头文件#include<string.h>

1.strlen函数

  • 获取字符串的长度
  • 从第一个字符开始直到遇见\0,返回字符串的长度

size_t strlen(const char* str);
//size_t一个整型类型表示字符串的长度
//size_t已有整型变量(unsigned int,unsigned long,unsigned long long)的别名
//const保证不会修改指针指向的字符
#include<stdio.h>
#include<string.h>
int main()
{
char str[]="helloworld";
int l=strlen(str);
printf("%d",l);
return 0;
}

【C语言_21】处理字符串的函数!

2.strcat函数

  • 字符串拼接函数
  • 将源字符串拼接到目标字符串的后面

char* strcat(char* destination,char* source);
#include<stdio.h>
int main()
{
char dest[11]="hello";
char sour[6]="world";
printf("%s\n",dest);
printf("%s\n",sour);
strcat(dest,sour);
printf("%s\n",dest);
printf("%s\n",sour);
return 0;
}

【C语言_21】处理字符串的函数!

 

3.strcpy函数

  • 字符串复制函数
  • 把sour 所指向的字符串复制到dest。 需要注意的是如果目标数组dest 不够大,而源字符串的长度又太长,可能会造成缓冲溢出的情况。

char* strcpy(char* destination,const char* source);
#include<stdio.h>
int main()
{
char dest[9]="ILOVE";
char sour[4]="YOU";
printf("%s\n",dest);
printf("%s\n",sour);
strcpy(dest,sour);
printf("%s\n",dest);
printf("%s\n",sour);
return 0;
}

【C语言_21】处理字符串的函数!

4.strcmp函数

  • 比较两个字符串,若一致返回0,否则返回其他值。

int strcmp(const char* str1,const char* str2);
#include<stdio.h>
int main()
{
const char* str1="zxcvbn";
const char* str2="zxcvbnm";
const char* str3="zxcvb";
int r=strcmp(str1,str2);
}

5.<string.h>库函数总结

int bcmp(const void *s1, const void *s2, int n)
//比较字符串s1和s2的前n个字节是否相等

void bcopy(const void *src, void *dest, int n)
//将字符串src的前n个字节复制到dest中

void bzero(void *s, int n)
//置字节字符串s的前n个字节为零

void *memccpy(void *dest, void *src, unsigned char ch, unsigned int count)
//由src所指内存区域复制不多于count个字节到dest所指内存区域,如果遇到字符ch则停止复制

void *memcpy(void *dest, void *src, unsigned int count)
//由src所指内存区域复制count个字节到dest所指内存区域

void *memchr(void *buf, char ch, unsigned count)
//从buf所指内存区域的前count个字节查找字符ch

int memcmp(void *buf1, void *buf2, unsigned int count)
//比较内存区域buf1和buf2的前count个字节

int memicmp(void *buf1, void *buf2, unsigned int count)
//比较内存区域buf1和buf2的前count个字节但不区分字母的大小写

void *memmove(void *dest, const void *src, unsigned int count)
//由src所指内存区域复制count个字节到dest所指内存区域

void *memset(void *buffer, int c, int count)
//把buffer所指内存区域的前count个字节设置成字符c

void setmem(void *buf, unsigned int count, char ch)
//把buf所指内存区域前count个字节设置成字符ch

void movmem(void *src, void *dest, unsigned int count)
//由src所指内存区域复制count个字节到dest所指内存区域

char *strcpy(char *dest,char *src)
//把src所指由NULL结束的字符串复制到dest所指的数组中

char *strcat(char *dest,char *src)
//把src所指字符串添加到dest结尾处(覆盖dest结尾处的’\0’)并添加’\0’

char *strchr(char *s,char c)
//查找字符串s中首次出现字符c的位置

int strcmp(char *s1,char * s2)
//比较字符串s1和s2

int stricmp(char *s1,char * s2)
//比较字符串s1和s2,但不区分字母的大小写

int strcspn(char *s1,char *s2)
//在字符串s1中搜寻s2中所出现的字符

char *strdup(char *s)
//复制字符串s

int strlen(char *s)
//计算字符串s的长度

char *strlwr(char *s)
//将字符串s转换为小写形式

char *strupr(char *s)
//将字符串s转换为大写形式

char *strncat(char *dest,char *src,int n)
//把src所指字符串的前n个字符添加到dest结尾处(覆盖dest结尾处的’\0’)并添加’\0’

int strcmp(char *s1,char * s2,int n)
//比较字符串s1和s2的前n个字符

int strnicmp(char *s1,char * s2,int n)
//比较字符串s1和s2的前n个字符但不区分大小写

char *strncpy(char *dest, char *src, int n)
//把src所指由NULL结束的字符串的前n个字节复制到dest所指的数组中

char *strpbrk(char *s1, char *s2)
//在字符串s1中寻找字符串s2中任何一个字符相匹配的第一个字符的位置,空字符NULL不包括在内

char *strrev(char *s)
//把字符串s的所有字符的顺序颠倒过来(不包括空字符NULL)

char *strset(char *s, char c)
//把字符串s中的所有字符都设置成字符c

char *strstr(char *haystack, char *needle)
//从字符串haystack中寻找needle第一次出现的位置(不比较结束符NULL)

char *strtok(char *s, char *delim)
//分解字符串为一组标记串。s为要分解的字符串,delim为分隔符字符串

int strnicmp(char *s1,char * s2,int n)
//比较字符串s1和s2的前n个字符但不区分大小写

持续更新【C语言】系列!有需要的移步主页​​秃头程序媛主页​