内存管理函数
Name |
comment |
void * memset(void * dest, int c, size_t n) |
将一段内存空间填上某值 |
void * memcpy(void * dest, const void * src, size_t n) |
复制一段内存内容 |
int memcmp(const void * s1, const void * s2, size_t n) |
比较两段内存内容 |
void * memchr(const void * s, int c, size_t n) |
在某一段内存范围中查找特定字节 |
int main ()
{
char str[20];
char str1[5] = "ok";
char str2[5] = "hl";
strcpy(str,"hello world");
puts(str);
memset(str,'0',4);//str内存地址 0为填充数字 4为要填充的字节数
puts(str);
memcpy(str,str1,2);//str1为要被复制的字符串,2位被复制的字节数
puts(str);
int i=memcmp(str1,str2,2);//2表示要比较的字节数
printf("%d\n",i);
char *s = (char *) memchr(str,'w',strlen(str));//str为要被搜索的内存地址,'w'为要被搜索的字符,strlen(str)为搜索的字节数
printf("%s",s);
return 0;
}
常用字符串操作
Name |
comment |
char * strcat(char * deat, const char * src) |
连接两个字符串 |
char * strcpy(char * dest, const char * src) |
复制字符串 |
int strcmp(const char * s1, const char * s2) |
比较两个字符串 |
size_t strlen(const char * s) |
获取一个字符串的长度 |
char * strtok(char * s1, const char * s2) |
分割字符串 |
- 注:strcat()与strcpy()返回值都是返回字符串指针,且都是保存在第一个参数当中
- strcmp()返回值:
当s1<s2时,返回为负数;
当s1=s2时,返回值= 0;
当s1>s2时,返回正数
- strtok()返回值为字符串指针
- 实操
int main () {
char str[20] = "hello-world-hh";
const char s[2] = "-";
char *token;
/* 获取第一个子字符串 */
token = strtok(str, s);
/* 继续获取其他的子字符串 */
while( token != NULL ) {
printf( "%s\n", token );
token = strtok(NULL, s);//首次调用时,s必须指向要分解的字符串,随后调用要把s设成NULL
}
return(0);
}
字符串查找
Name |
comment |
char * strchr(const char * s, int c) |
正向查找一个字符 |
char * strrchr(const char * s, int c) |
反向查找一个字符 |
char * strstr(const char * s1, const char * s2) |
查找一个字符串 |
char * strpbrk(const char * s1, const char * s2 |
查找一个字符集合 |
- 注: strstr为字符串,strpbrk为字符集合
- 返回值:
strchr()返回一个指向该字符串中第一次出现的字符的指针,如果字符串中不包含该字符则返回NULL空指针
strrchr():查找一个字符c在另一个字符串str中末次出现的位置,并返回这个位置的地址。如果未能找到指定字符,那么函数将返回NULL。
strstr:从第一个参数中查找第二个字符串参数,如果查到返回那个参数的指针。否则,返回NULL。
strpbrk:依次检验字符串s1中的字符,当被检验字符在字符串s2中也包含时,则停止检验,并返回该字符位置,空字符null不包括在内。
- 实操
int main()
{
const char *str = "helloworld";
//查找一个字符
char *chr_result = strchr(str, 'l');
//查找从右边开始的第一个字符
char *rchr_result = strrchr(str, 'l');
printf("chr_result is %s\n", chr_result);
printf("rchr_result is %s\n", rchr_result);
//查找任何几个字符
char *pbrk_result = strpbrk(str, "abcl");
printf("pbrk_result is %s\n", pbrk_result);
//查找一个子串
char *str_result = strstr(str, "lo");
printf("str_result is %s\n", str_result);
return 0;
}
运行结果:
chr_result is lloworld
rchr_result is ld
pbrk_result is lloworld
str_result is loworld