时隔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中首次出现的位置,成功则返回对应指针,失败返回NULLchar *strrchr(const char *s,char c)查找c所代表的字符在字符串s中最后出现的位置,成功则返回对应指针,失败则返回NULLsize_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中出现的首位地址,成功则返回指针,失败则返回NULLchar *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的位置,成功则返回指针,失败则NULLvoid *memset(void *s1,int c,size_t n)将c复制到内存块s1的前n个位置,并返回指针