第九章 字符串,字符和字节
1.NUL字节是字符串终止符,但它本身并不是字符串的一部分,所以字符串的长度并不包括NUL字节。
2.size_t这个类型是在头文件stddef.h中定义的,返回长度。
3.连接字符串:strcat
strcpy(message,"hello"); strcat(message,customer_name); strcat(message,",how are you?");
hello,how are you?
strcat(strcpy(dat,a),b);
ab
4.字符串比较(字典比较):比较ASCII码大小 strcmp
5.NUL相当于‘\0’,结束字符串,前者为字符常量的名字,后者相当于是字符串常量
NULL在stddef.h中专门为空指针定义的一个宏(void *)0
6.strlen不包含'\0',strcpy会把'\0'复制过去。
strlen返回字符串长度时,不会把字符串长度返回过去。
7.长度受限的字符串函数:strncpy.......char *strncpy(char *dst, char const *src, size_t len) 向dst中写入len个字符,如果被复制字符串小于len个字符,则将用NUL补充至len个。如果大于或等于,结果不会有NUL所以需要自己加上‘\0’。
strncat.......char *strncat(char *dst, char *src,size_t len)总是在结果字符串后面添加NUL字节,而且它不会像strncpy那样对目标数组用NUL字节进行填充。
strncmp........int strncmp(char const *s1,char const *s2, char const *s3)只对前len个进行比较。
8.字符串查找:
查找一个字符:strchr,strrchr 查找任何几个字符:strpbrk
查找一个子串:strstr 查找一个字符串前缀:strspn,strcspn
查找标记:strtok 错误信息:strerror
字符转换:tolower,toupper 内存操作:memcpy(复制),memchr(查找),memset(设置(初始化等))
字符串分类:iscnstrl.....
9.在使用strcpy和strcat时要考虑容器够大,否则会溢出。