目录
size_t strlen(const char* source)
char*strcpy(char* destination,const char * source)
char* strcat(char* destination, const char *source)
int strcmp(const char* str1,const char *str2)
char * strncpy(char* destination,const char* source, size_t num);
char* strncat(char* destination,char* source,size_t num);
int strncmp(const char * str1 ,const char* str2,size_t num);
char * strstr (const char* str1,const char* str2)
char*strtok(char* str, const char* sep);
void * memcpy(void *destination,const void *source,size_t num)
void * memmove(void *destination,const void * source,size_t num)
int memcmp ( const void * ptr1,const void * ptr2,size_t num );
size_t strlen(const char* source)
返回值为unsigned int 类型,返回传入所指向的区域在遇到'\0'之前所有的字符数目,模拟实现有循环法和递归法。
char*strcpy(char* destination,const char * source)
将源位置的字符串拷贝到目标位置的字符串,在源位置遇到'\0'的时候停止,目标空间必须可以修改,vs2019中strcpy在遇到目标位置和源位置重叠的时候不会出问题。
如果拷贝成功返回的是目标位置的首地址,如果拷贝失败返回NULL
char* strcat(char* destination, const char *source)
strcpy是将源位置的字符放到destination中,如果本来有数据则替换,而strcat函数则是在destination后加上source内的字符。
返回值和strcpy相同
int strcmp(const char* str1,const char *str2)
将两个str1与str2逐字符比较,如果遇到str1,str2中的字符的首个不同时返回:
返回值为:
str1大,返回大于0的数字
相等:返回0
str2大:返回小于0的数字
char * strncpy(char* destination,const char* source, size_t num);
从source中拷贝Num个字符给到destination中,如果在num个传递之前已经遇到'\0'则在后追加0
返回值与strcpy相似。
char* strncat(char* destination,char* source,size_t num);
在destination后追加num个来自source的字符,不足时同样补0。
int strncmp(const char * str1 ,const char* str2,size_t num);
比较str1 str2的前num个字符串,返回值与strcmp的原理相同。
char * strstr (const char* str1,const char* str2)
在str1中寻找str2,如果找到则返回一个指向str2在str1中首次出现位置的指针,如果没找到则返回null
char*strtok(char* str, const char* sep);
第二个参数为分隔符,可以不只有一个,str为被切割的字符串,将str中的分隔符删除,改为'\0'后返回开头地址,如果strtok如果第一个参数为null,则此时函数会记住上次使用时的位置,从呢之后继续开始访问
char* strerror(int errno)
errno 仅仅为0 1 2 3 4 5在使用的时候要errno.h,在使用的时候直接
printf("%s",strerror(errno))打印信息即可
0表示没有错误
1表示没有权利执行次操作
2没有此文件
3没有这个过程
4过程被打断
5输入输出错误
多次调用可以捕获不同的错误信息
void prror(const char * str)
打印出"str":+错误信息
void * memcpy(void *destination,const void *source,size_t num)
将source 的前num个字节的数据拷贝到destination所指向的内存里去,在遇到“\0”的时候不会停下来,如果des和sour有重叠时非法的,复制结果未定义。
要注意,memcpy和strcpy不同的就是操作对象一个是对内存中任意的数据均可以拷贝,另一个则是对字符串的对象进行操作,同时操作的单位也是字节,要计算好每次处理的字节以防出错,可以多用sizeof
void * memmove(void *destination,const void * source,size_t num)
如果des 和 source没有重合,则这个函数与memcpy相似,而如果两个有重合,则不太相同,这个函数会防止出错调整赋值顺序而避免全部被赋成相同的元素。
int memcmp ( const void * ptr1,const void * ptr2,size_t num );
按照字节比较,返回值与此前的比较函数没差