字符串以NUL字节结尾,字符串长度不包括NUL字节
头文件string.h包含了字符串函数需要的原型和声明
不受长度限制字符串函数:
1、复制字符串
char *strcpy(char *dst, char const *src); 返回目标字符数组指针
2、连接字符串
char *strcat(char *dst, char const *src); 返回目标字符数组指针
3、字符串比较
int strcmp(char const *s1, char const *s2);
若s1<s2,返回负值;
若s1>s2,返回正值;
若s1=s2,返回0;
长度受限的字符串函数:
接收长度参数用于限定复制或比较的字符数,可以防止内存溢出
char *strncpy(char *dst, char const *src, size_t len);
如果src数组长度小于len,dst数组就用额外的NUL字节填充到len长度
如果src数组长度大于或等于len,那么只有len个字符被复制到dst,注意,它的结果将不会以NUL结尾
char *strncat(char *dst, char const *src, size_t len);
int strncmp(char const *s1, char const *s2, size_t len);
在使用不受限制的函数之前,必须确定字符串实际上是以NUL结尾的。
char buffer[BSIZE]; ... strncpy(buffer, name , BSIZE); buffer[BSIZE - 1] = '\0';加入name太长,此赋值语句可以保证buffer的字符串是以NUL结尾的。
字符查找:
char *strchr( char const *str, int ch );
char *strrchr( char const *str, int ch );
参数:ch:需要查找的字符值
返回:若不存在,返回NULL
若存在,strchr返回第一个指向该位置的指针, strrchr返回最后一个指向该位置的指针
char string[] = "hello world"; char *ans;<pre name="code" class="cpp">ans = strchr(string, 'h');
查找字符串中最先出现的字符位置
char *strpbrk(char const *str, char const * group);
char string[] = "hello world"; char *ans; ans = strpbrk(string, “rld”);
查找子串
char *strstr(char const *s1, char const *s2);
忽略大小写比较字符串
int strncasecmp(const char *s1,const char *s2,size_t n);
复制字符串
char * strdup( const char *s);
函数说明:strdup()会先用maolloc()配置与参数s字符串相同的空间大小,然后将参数s字符串的内容复制到该内存地址,然后把该地址返回。该地址最后可以利用free()来释放。
返回值:返回一字符串指针,该指针指向复制后的新字符串地址。若返回NULL表示内存不足。