第九章:字符串和字节
-
strlen()
返回结果为无符号数,常见错误有if((strlen(x) - strlen(y))>0)
-
复制字符串:
char *strcpy(char *dst, char const *src)
-
连接字符串:
char *strcat(char *dst, char const *src)
-
strcat and strcpy
均返回第一个参数的一份拷贝,(指针) -
比较字符串:
int strcmp(char const *s1, char const *s2)
-
strncpy strncat strncmp
形参多一个size_t len
-
查找一个特定字符
strchr strrchr
-
查找一组特定字符
char *strpbrk(char const *str, char const *group)
-
查找一个子串
char * strstr(char const *s1, char const *s2)
`
/* 用strstr实现strrstr 即在s1中查找s2最右出现的位置,并返回指向该位置的指针。 */ #include <string.h> char * strrstr(char const *s1, char const *s2) { register char *last; register char *current; last = NULL; if (*s2 != '\0') { current = strstr(s1,s2); while (current != NULL) { last = current; current = strstr(last + 1, s2); } } return last; }
`
- 查找字符串前缀:
strspn strcspn
- 查找标记
strtok
(可用于分割字符串) - 大小写转换
tolower toupper
- 查找字符串前缀:
第十章:结构和联合
-
struct tag {member-list} variable-list
, tag是结构体标签 -
typedef struct{member-list} tag
, tag是类型名 -
结构体的自引用(借助结构标签)
typedef struct SELF_REF_TAG { int a; struct SELF_REF_TAG *b; }SELF_REF;
-
结构体初始化
struct INIT_EX { int a; short b[10]; Simple c; }x ={ 10, {1,2,3,4}, {23,'x',1.2} };
-
位段: 允许在一个结构体中以位为单位来指定其成员所占内存长度,利用位段能够用较少的位数存储数据,一般用于控制领域。
struct CHAR { unsigned score:7; unsigned students:10; int teachers:10; }; struct CHAR ch1;
-
联合: 又称之为共用体,同一块内存可以用来保存多个数据类型的数据
union data { int num; float pi; char content; };