《C和指针》 读书笔记 -- 第9章 字符串、字符和字节
1.字符串以NUL结尾,但字符串长度不包括NUl字节。
2.复制字符串
char *strcpy(char *dst,char const *src);
3.连接字符串
char *strcat(char *dst,char const *src);
4.字符串比较
int strcmp(char const *s1,char const *s2);
5. 长度受限的字符串函数
char *strncpy(char *dst,char const *src,size_t len);//strlen(src)>=len 它的结果将不会以NUl字节结尾,可以buffer[BSIZE-1]='\0'来他添加NUL字节。
char *strncat(char *dst,char const *src,size_t len);
int strncmp(char const *s1,char const *s2,size_t len);
6.字符串查找基础
6.1查找一个字符串
char *strchr(char const *str,int ch);
char *strrchr(char const *str,int ch);//返回该字符串中该字符最后一次出现的位置。
e.g. ans=strchr(string,'h');
6.2查找任何几个字符
char *strpbrk(char const *str,char const *group);//返回第一个匹配的group中任何一个字符的字符位置。
6.3查找一个子串
char *strstr(char const *s1,char const *s2);
7.高级字符查找
7.1查找一个字符串前缀 (P 182)
size_t strspn(char const *str,char const *group);
size_t strcspn(char const *str,char const *group);
7.2查找标记
char *strtok(char *str,char const *sep);//strtok找到str的下一个标记,并将其用NUL结尾,然后返回一个指向这个标记的指针。
【1】如果第一个参数不是NULL,函数找到第一个标记,strtok保存其位置。
【2】如果第一个参数为NULL,函数就在同一个字符串中从这个被保存的位置开始查找下一个标记,如果没标记了,就返回NULL指针。
e.g. for(token = strtok(line,whitespace);token != NULL;token=strtok(NULL,whitespace))
printf("Next token is %s \n",token);
8.内存操作 遇到NUL不会停止操作
void *memcpy(void *dst,void const *src,size_t length);//第三个参数指定复制的长度(以字节计) ===》 memcpy(saved_answers,answers,count*sizeof(answer[0]));
void *memmove(void *dst,void const *src,size_t length);
void *memcmp(void const *a,void const *b,size_t length);
void *memchr(void const *a,int ch,size_t length);
void *memset(void *a,int ch,size_t length);//把从a开始的length个字节设为字符值ch。 常用!!