C语言进阶——字符串函数

C语言进阶——字符串函数

都在头文件“#include<string.h>”中。
1.strlen函数——测字符串长度,遇到‘\0’停止。返回值为一个无符号整型。
函数原型:size_t strlen( const char *string );
函数参数:字符类型指针(也就是字符串的首地址)——char *
2.strcpy函数——字符串拷贝。
函数参数(2个):目标字符串(strDestination)地址和源字符串(strSource)地址,返回值为目标字符串地址。
函数原型:char *strcpy( char *strDestination, const char *strSource );
3.strcmp函数——字符串比较。返回值为1,0,-1
函数参数(2个):1字符串地址和2字符串地址。
当字符串1>字符串2,返回1;
当字符串1<字符串2,返回-1;
当字符串1=字符串2,返回0;
函数原型:int strcmp( const char *string1, const char *string2 );
4.strcat函数——字符串连接函数。连接两个字符串。
函数参数(2个):目标字符串(strDestination)地址和源字符串(strSource)地址,返回值为目标字符串地址。
函数原型:char *strcat( char *strDestination, const char *strSource );
5.strncpy函数——带长度限制的字符串拷贝函数。
函数参数(3个):目标字符串(strDest)地址、源字符串(strSource)地址和要拷贝的字符个数,返回值为目标字符串地址。
函数原型:char *strncpy( char *strDest, const char *strSource, size_t count );
6.strncat函数——有长度限制的字符串连接函数。
函数参数(3个):目标字符串(strDest)地址、源字符串(strSource)地址和要连接的字符个数,返回值为目标字符串地址。
函数原型:char *strncat( char *strDest, const char *strSource, size_t count );
例:

char string[80] = "This is the initial string!";
 char suffix[] = " extra text to add to the string...";
 strncat( string, suffix, 19 );//自动补‘\0’

结果为:“This is the initial string! extra text to add ”
7.strncmp函数——带长度限制的字符串比较函数。
函数参数(3个):1字符串地址、2字符串地址和要比较的字符个数,返回值为1,0,-1。
当字符串1>字符串2,返回1;
当字符串1<字符串2,返回-1;
当字符串1=字符串2,返回0;
函数原型:int strncmp( const char *string1, const char *string2, size_t count );
8.strstr函数——子串查找函数。
函数参数:主串地址和子串地址,返回值为在主串中第一次找到子串时对应的第一个字符的地址。
函数原型:char *strstr( const char *string, const char *strCharSet );//前者为主串,后者为子串。
9.strtok函数——字符串分割函数。
函数参数:被分割字符串的地址和分割符串。但是原理是用‘\0’替换分割符在字符串中的对应位置。
函数原型:char *strtok( char *strToken, const char *strDelimit );
注意:当strToken为NULL时,会接着上一次分割的位置继续找分割的位置。
所以有固定格式:

char string[] = "A string\tof ,,tokens\nand some  more tokens";
char seps[]   = " ,\t\n";
char *token;
 token = strtok( string, seps );
   while( token != NULL )
   {
    
    
      printf( " %s\n", token );
      token = strtok( NULL, seps );
   }

最终结果为:
A
string
of
tokens
and
some
more
tokens
10.memcpy函数——可以拷贝任意类型的数据,只不过内部按照一个字节一个字节进行拷贝。(可能会出现内存重叠)
函数参数(3个):(任意类型)目标字符串(dest)地址、(任意类型)源字符串(src)地址和要拷贝的字节个数,无返回值。
函数原型:void *memcpy( void *dest, const void *src, size_t count );
11.memmove函数——类似memcpy函数,不会出现内存重叠。
函数参数(3个):(任意类型)目标字符串(dest)地址、(任意类型)源字符串(src)地址和要拷贝的字节个数,无返回值。
函数原型:void *memmove( void *dest, const void *src, size_t count );

猜你喜欢

转载自blog.csdn.net/qq_45841205/article/details/110094873