随感:
时隔1个月,继续写博客。这期间进入了新行业、开始了新工作,进入了新环境,接触到新的氛围、工作方式和人群,一直在花时间在调整自己的状态以适应,所以没有更新!
最近想来想去,觉得还是需要继续将这个系列写下去,为了总结自己的过去,也为了自己的兴趣。
正文
这篇主要是之前学习linux环境下C开发时接触到的一些字符和内存操作函数。字符类的函数在使用的时候需要注意字符串的‘\0’结束符,以避免使用函数过程中出现缓冲区溢出的情况;内存函数需要注意内存函数能否同一个内存区域内操作,以避免发生异常行为。
常用函数 | 作用 |
---|---|
size_t strlen(const char *s) | 返回字符串s的长度,不包括结束符 |
char *strerror(int errornum) | 返回详细描述errornum的文本字符串指针 |
char *strchr(const char *s,char c) | 查找c所代表的字符在字符串s中首次出现的位置,成功则返回对应指针,失败返回NULL |
char *strrchr(const char *s,char c) | 查找c所代表的字符在字符串s中最后出现的位置,成功则返回对应指针,失败则返回NULL |
size_t strcspn(const char *s1,const char *s2) | 计算并返回字符串s1中不包含任何s2中字符的起始段长度 |
size_t strspn(const char *s1,const char *s2) | 计算并返回字符串s1中只包含s2中字符的起始段长度 |
char *strpbrk(const char *s1,const char *s2) | 计算字符串s2中任意字符在s1中出现的首位地址,成功则返回指针,失败则返回NULL |
char *strstr(const char *s1,const char *s2) | 查找s2在s1中首次出现的位置 |
char *strtok(char *s1,const char *s2) | 用s2将字符串s1分割成一系列标号 |
int strcmp(const char *s1,const char *s2) | 比较s1和s2,逐个比较字符串中字符,直到出现大小 |
intstrncmp(const char *s1,const char *s2,int n) | 比较字符串s1和s2的前n个字符 |
char *strcpy(char *s1,const char *s2) | 将字符串s2拷贝到字符串s1中,注意缓冲区溢出! |
char *strncpy(char *s1,const char *s2,int n) | 将字符串s2的前n个字符拷贝到字符串s2中,注意缓冲区溢出以及新字符串的结束符 |
char *strcat(char *s1,const char *s2) | 将s2的字符串追加到s1中 |
char *strncat(char *s1,const char *s2,int n) | 将s2的前n个字符追加到s2中 |
========================== | =================== |
void *memcpy(void *s1,const void *s2,size_t n) | 将内存块s2内的n个字符复制到s1中,注意该函数不能用于s1和s2不能有重叠区域,否则会有异常行为! |
void *memmove(void *s1,const void *s2,size_t n) | 将内存块s2内的n个字符复制到临时空间中,再复制到s1中 |
int memcmp(const void *s1,const void *s2,size_t n) | 将s1和s2的前n个字符进行比较大小并返回结果 |
void *memchr(const void *s1,int c,size_t n) | 在s1的前n个字符在红查找字符c的位置,成功则返回指针,失败则NULL |
void *memset(void *s1,int c,size_t n) | 将c复制到内存块s1的前n个位置,并返回指针 |