str的各种函数原型strcat、strcpy等
来源:互联网 发布:税务总局网络培训学院 编辑:程序博客网 时间:2024/06/05 13:31
strcat与strncat原型
////////////////////////////////////////////////////////////////////////////功能为连接两个字符串,把src连接到dest后面;返回dest地址;//////////////////////////////////////////////////////////////////////////char* mystrcat(char* dest,const char* src){assert((dest != NULL) && (src != NULL));char* res = dest;while(*dest) // *dest != '\0' {dest++;}while(*dest++ = *src++){NULL;}return res;}
/*//功能为连接两个字符串,把src连接到dest后面;返回dest地址;*/char* mystrncat(char* dest,const char* src,unsigned int num){assert((dest != NULL) && (src != NULL));if (!num){return dest;}char* res = dest;while(*dest) // *dest != '\0' {dest++;}while(*dest++ = *src++){if (--num == 0){*dest = '\0';break;}}return res;}
strchr与strrchr原型
////////////////////////////////////////////////////////////////////////////功能为查找str中首次出现c的位置,如有有,则返回出现位置,否则返回NULL;///////////////////////////////////////////////////////////////////////////*const char * strchr ( const char * str, int character );char * strchr ( char * str, int character )*/char* mystrchr(char* str,char c){assert(str != NULL);while(*str && *str != c){str++;}if (*str == c)return str;return NULL;}
////////////////////////////////////////////////////////////////////////////功能为查找str中最后一次出现c的位置,如有有,则返回出现位置,否则返回NULL;//////////////////////////////////////////////////////////////////////////char* mystrrchr(char* str,char c){assert(str != NULL);char* res = str;while(*res++);while((--res != str) && (*res != c));if (*res == c)return res;return NULL;}
strcmp与strncmp原型
////////////////////////////////////////////////////////////////////////////功能为比较两个字符串;//当str1指向的字符串大于str2指向的字符串时,返回正数。//当str1指向的字符串等于str2指向的字符串时,返回0。//当str1指向的字符串小于str2指向的字符串时,返回负数。;//////////////////////////////////////////////////////////////////////////int mystrcmp(const char* str1,const char* str2){assert((str1 != NULL) && (str2 != NULL));while (*str1 && (*str1 == *str2)){str1++;str2++;}return *str1-*str2;}
////////////////////////////////////////////////////////////////////////////功能为比较两个字符串前num个字符;//当str1指向的字符串大于str2指向的字符串时,返回正数。//当str1指向的字符串等于str2指向的字符串时,返回0。//当str1指向的字符串小于str2指向的字符串时,返回负数。;//////////////////////////////////////////////////////////////////////////int mystrncmp(const char* str1,const char* str2,unsigned int num){assert((str1 != NULL) && (str2 != NULL));if (!num)return 0;while (--num && *str1 && (*str1 == *str2)){str1++;str2++;}return *str1-*str2;}
strcpy与strncpy原型
/*功能为拷贝字符串内容到目的串,把src所指向的内容拷贝到dest;*/char* mystrcpy(char* dest,const char* src){assert((dest != NULL) && (src != NULL));char* res = dest;while(*dest++ = *src++){NULL;}return res;}
/*功能为拷贝字符串内容到目的串,把src所指向的内容的前num个字符拷贝到dest;标准库中返回指针不是以null即'\0'结束的,必须手动添加*/char* mystrncpy(char* dest,const char* src,unsigned int num){assert((dest != NULL) && (src != NULL));if (!num){*dest = '\0';return dest;}char* res = dest;while(*dest++ = *src++){if (--num == 0){*dest = '\0';break;}}return res;}
strspn与strcspn原型
////////////////////////////////////////////////////////////////////////////功能:在字符串str1中搜寻str2中所出现的字符//说明:返回第一个出现的字符在s1中的下标值//亦即在s1中出现而s2中没有出现的子串的长度;//////////////////////////////////////////////////////////////////////////unsigned int mystrcspn ( const char * str1, const char * str2 ){assert((str1 != NULL) && (str2 != NULL));// map有32个字节的大小,也就是256个bit,可把map堪称一个2维数组[32][8]unsigned char map[32] = {0};// 每个ASCII码(设为c)有8bit,把它分成2部分,低3位构成下标j(通过c&7(2进制为111));// 高5位构成下标i(通过c>>3得到)。这样在map[i][j]中置1表示字符存在;while(*str2){map[*str2 >> 3] |= (unsigned int)(1 << (*str2 & 7));str2++;}map[0] |= 1;unsigned int count = 0;while(!(map[*str1 >> 3] & (unsigned int)(1 << (*str1 & 7)))){count++;str1++;}return count;}
//返回字符串中第一个不在指定字符串中出现的字符下标//亦即第一个在s1中出现且s2中存在的子串的长度;unsigned int mystrspn(char* str1,char* str2){assert((str1 != NULL) && (str2 != NULL));// map有32个字节的大小,也就是256个bit,可把map堪称一个2维数组[32][8]unsigned char map[32] = {0};// 每个ASCII码(设为c)有8bit,把它分成2部分,低3位构成下标j(通过c&7(2进制为111));// 高5位构成下标i(通过c>>3得到)。这样在map[i][j]中置1表示字符存在;while(*str2){map[*str2 >> 3] |= (unsigned int)(1 << (*str2 & 7));str2++;}map[0] |= 0;unsigned int count = 0;while((map[*str1 >> 3] & (unsigned int)(1 << (*str1 & 7)))){count++;str1++;}return count;}
strlen原型
////////////////////////////////////////////////////////////////////////////功能为返回字符串str的长度(不包括'\0');//size_t strlen ( const char * str );//////////////////////////////////////////////////////////////////////////unsigned int mystrlen(const char* str){assert(str != NULL);unsigned int len = 0;while(*str++){len++;}return len;}
strstr原型
//需找str字符串中出现strSearch字符串位置的指针。如果没找到,则返回NULL,如果strSearch为空,则返回str;char* mystrstr(char* str,char* strSearch){/*int length1=strlen(str); int length2=strlen(strSearch); while(length1>=length2) { length1--; if(!mystrncmp(str,strSearch,length2))//比较前n个字符串;return str; str++; } return NULL; */char* b = strSearch;if( *b == NULL ){return str;}char* a = NULL;for( ; *str != NULL; str++) {if( *str != *b ) {continue;}a = str;while(1) {if( *b == NULL ) {return str;}if( *a++ != *b++ ) {break;}}b = strSearch;}return NULL;}
strpbrk
//在源字符串(str1)中找出最先含有搜索字符串(str2 )中的任一字符的位置并返回,若找不到则返回空指针;//与mystrnspn的算法一样,只是前者返回相同字符的指针位置,后者返回相同字符的个数;char* mystrpbrk(char* str1,char* str2){assert((str1 != NULL) && (str2 != NULL));// map有32个字节的大小,也就是256个bit,可把map堪称一个2维数组[32][8]unsigned char map[32] = {0};// 每个ASCII码(设为c)有8bit,把它分成2部分,低3位构成下标j(通过c&7(2进制为111));// 高5位构成下标i(通过c>>3得到)。这样在map[i][j]中置1表示字符存在;while(*str2){map[*str2 >> 3] |= (unsigned int)(1 << (*str2 & 7));str2++;}map[0] |= 1;while(*str1){// 如果有相同的字符则返回;if( map[*str1 >> 3] & (1 << (*str1 & 7)) )return str1++;str1++;}return NULL;}
经过一天的奋斗,终于将这些理清楚了。再接再厉!
这些经常出现在面试题中,不能再输在这上面了
0 0
- str的各种函数原型strcat、strcpy等
- strcpy和strcat的函数原型
- strcpy,strcat,strlen函数原型
- strcpy strcmp strcat 函数原型
- strcpy strcat等相关函数的实现
- 字符串操作strlen,strcpy,strcat的函数原型
- Strcat,strcpy,strcmp,Strlen函数原型
- Strcat,strcpy,strcmp,Strlen函数原型
- Strcat,strcpy,strcmp,Strlen函数原型-实现
- Strcat /Strcpy /Strcmp / Strncmp/ Strlen 函数原型
- strcat,strcpy,strcmp,strlen,memcpy函数原型
- Strcat,strcpy,strcmp,Strlen函数原型
- 用 Strcat,strcpy,strcmp,Strlen函数原型
- strcpy,strcat, strcmp, atoi, itoa函数原型
- Strcat,strcpy,strcmp,Strlen函数原型
- Strcat,strcpy,strcmp,Strlen函数原型
- Strcat,strcpy,strcmp,Strlen函数原型
- strcpy,strcmp,strlen,strcat函数原型
- Android Application的使用!
- hadoop中带后缀的多路输出part文件
- Android Contacts(一)—— 读取联系人
- C#消息传值
- bit程设 26. Little Bishops uva 861
- str的各种函数原型strcat、strcpy等
- php如何解析xml
- ruby on rails Linux环境配置和部署
- 获取标题栏的高度
- 推荐系统简介
- 内网劫持渗透利器——MITMf指南
- 传智播客C语言视频第一季(有效下载期为10.1-10.7,10.8关闭)
- Rip Van Winkle's Code - UVa 12436 线段树
- HQL查询语言