字符函数和字符串函数

字符函数

字符分类函数

字符串函数

strlen

  • size_t strlen (const char *str);
  • 返回字符串的长度,'\0'结束,不包括'\0'

strcpy

  • char* strcpy (char* detination, const cahr* source);
  • 拷贝字符串,源字符串以'\0'结束,而且'\0'也拷贝,拷贝失败返回detination

strcat

  • char* strcat (char* destination, const char* source);
  • 将源字符串追加到目的字符串后,源字符串必须以'\0'结束,目的字符串必须有足够大的空间并可以修改,追加失败返回detination

strcmp

  • int strcmp (const char* str1, const char* str2);
  • 从第一个字符开始比较每一个字符,直到出现不一样的字符或'\0',str1大于str2返回大于0的数,等于返回0,小于返回小于0的数

strncpy

  • char* strncpy (char* destination, const char* sourse, size_t num);
  • 拷贝num个字符从源字符串到目标空间,如果源字符串长度小于num,则拷贝完成后在后面追加0,拷贝失败返回detination

strncat

  • char* strncat (char* destination, const char* sourse, size_t num);
  • 将num个源字符串的字符追加到目的字符串后,目的字符串必须有足够大的空间,如果num大于源字符串的长度,则只复制到'\0',追加失败返回detination

strncmp

  • int strncmp (const char* str1, const char* str2, size_t num);
  • 从第一个字符开始比较每一个字符,直到出现不一样的字符或'\0'或num个字符,str1大于str2返回大于0的数,等于返回0,小于返回小于0的数

strchr

  • char* strchr (const char* str, int character);
  • 查找字符串中字符第一次出现,返回该字符的地址,不存在则返回NULL

strrchr

  • char* strrchr (const char* str, int character);
  • 查找字符串中字符最后出现,找到返回该字符的地址,不存在则返回NULL

strpbrk

  • char* strpbrk (const char* str1, const char* str2);
  • 在字符串str1中寻找字符串str2中任何一个字符匹配,不包括'\0',找到返回第一个字符的地址,没找到返回NULL

strstr

  • char* strstr (const char* str1, const char* str2);
  • 查找str2在str1第一次出现,找到返回第一次匹配点的地址,没找到返回NULL
  • strspn
  • size_t strspn (const char* str1, const char* str2);
  • 返回str1中第一个不在str2出现的字符下标

strcspn

  • size_t strcspn (const char* str1, const char* str2);
  • 在字符串str1中寻找字符串str2中任何一个字符匹配,包括'\0',找到返回第一个字符的下标

strtok

  • char* strtok (char* str, const char* delimiters);
  • str中包含0个或多个由delimiters中的字符,以这些字符为标记,通过strtok函数找到str中的下一个标记,将其用'\0'结尾,返回指向这个标记的指针;若第一个参数不为NULL,函数将找到str中第一个标记,strtok保存它在字符串中的位置;当第一个参数为NULL时,函数将在同一个字符串中被保存的位置开始查找下一个标记;字符串不存在更多的标记,则返回NULL

strerror

  • char* strerror (int errnum);
  • 返回错误码所对应的错误信息

memcpy

  • void* memcpy (void* destination, const void* sourse, size_t num);
  • 从sourse内存地址起始位置开始拷贝大小为num的内存块到目标destination所指的内存地址的起始位置中并返回destination,遇到'\0'不会停下来;如果sourse和destination所指内存区域有重叠,则重叠区域结果未定义

memmove

  • void* memmove (void* destination, const void* sourse, size_t num);
  • memove与memcpy功能相同都是内存块的拷贝,不同的是memmove可以处理destination与sourse内存的重叠

memset

  • void* memset (void* ptr, int value, size_t num);
  • 将ptr的前num个字节用vlaue替换并返回ptr

memcmp

  • int memcmp (const void* ptr1, const void* ptr2, size_t num);
  • 比较ptr1和ptr2开始的num个字节,ptr1大于ptr2返回大于0的数,等于返回0,小于返回小于0的数

memchr

  • void* memchr (const void* ptr, int value, size_t num);
  • 在ptr所指内存区域的前num个字节查找第一次出现的字符value,找到返回字符的地址,没找到返回NULL

模拟strlen、strcpy、strcat、strcmp、strncpy、strncat、strncmp、strchr、strstr、memcpy、memmove的实现