c语言常见函数自编写
来源:互联网 发布:c语言web攻击脚本 编辑:程序博客网 时间:2024/06/07 01:36
//1.子字符串查找,如果找到返回第一个字符下标,找不到返回-1 复杂度O(m*n)int strfind(const char * str,const char* substr){if(str==NULL||substr==NULL){return -1;}int len1=strlen(str);int len2=strlen(substr);if(len1<len2)return -1;int c=len1-len2;int i,j;for(i=0;i<=c;i++){for( j=0;j<len2;j++){if(str[i+j]!=substr[j])break;}if(j==len2)return i+1;}return -1;}//2.在字符转中找到第一个只出现一次的字符char FirstCharNotRepeated(const char *str){int table[256];if(!str){return '\0';}for(int i=0;i<256;i++){table[i]=0;}int len=strlen(str);for(int i=0;i<len;i++){table[str[i]]++;}for(int i=0;i<len;i++){if(table[str[i]]==1)return str[i];}return '\0';}//3.字符串拷贝char *strcpy(char *dest,const char* src){if(dest==src){return dest;}assert(dest!=NULL&&src!=NULL);char* p=dest;while(*src!='\0'){*dest++=*src++;}*dest='\0';return p;}//4.查找字符串首次出现的字符位置char * strchr( char *str,char c){assert(str!=NULL);while(*str++!='\0'){if(c==*str)return str;}return NULL;}//5.字符串比较int strcmp(const char *s1,const char *s2){assert(s1!=NULL&&s2!=NULL);while(*s1&&*s2&&*s1==*s2){s1++;s2++;}return (*s1-*s2);}//6.n个字符拷贝char *strncpy(char *dest,const char * src,unsigned int n){assert(dest!=NULL&&src!=NULL);char *p=dest;while(n--&&*src!='\0'){*dest++=*src++;}*dest='\0';return p;}//7.字符串拼接char *strcat(char *dest,const char *src){assert(dest!=NULL&&src!=NULL);char *p=dest;while(*dest++!='\0');while(*src!='\0')*dest++=*src++;*dest='\0';return p;}//8.求字符串长度int strlen1(const char *str){assert(str!=NULL);int len=0;while(*str++!='\0')len++;return len;}//9.将字符串拷贝到新的位置char *dup(char *src){if(src!=NULL){int len=0;char *temp=src;while(*src++!='\0')len++;char *start=(char*)malloc(sizeof(char)*(len+1));assert(start!=NULL);while(*temp!='\0')*start++=*temp++;*start='\0';return (start-len);}return NULL;}//10.从src中取n个字符拼接到dest后面char *strncat(char *dest,const char *src,unsigned int n){assert(dest!=NULL&&src!=NULL);char *p=dest;while(*dest++!='\0');while(n--&&*src!='\0')*dest++=*src++;*dest='\0';return p;}//11.字符翻转char *strrev(char *str){assert(str!=NULL);char *s=str,*s2=str,temp;while(*s!='\0')s++;--s;while(s2<=s){cout<<*s<<*s2<<endl;temp=*s;*s=*s2;*s2=temp; s2++;s--;}return str;}//12.将src数组的count个字节搬到destiny数组void *memcpy(void *dest, const void *src, unsigned int count) {assert(dest!=NULL&&src!=NULL);void *p=dest;while(count--&&*(char*)src!='\0'){*(char*)dest=*(char*)src;dest=(char*)dest+1;src=(char*)src+1;}return p;}//13.将s所指向的某一块内存中的每个字节的内容全部设置为ch指定的ASCII值void *memset(void *s, int ch, unsigned n){assert(s!=NULL);void *p=s;while(n--){*(char*)p=(char)ch;p=(char*)p+1;}return s;}
0 0
- c语言常见函数自编写
- 编写常见C语言字符串函数
- c语言常见函数
- 自编写C语言头文件
- C语言编写可变函数
- C语言:编写strcpy函数
- 常见C语言字符串函数
- c语言常见函数总结
- C语言常见函数重写
- c --- 自编写四舍五入的myround函数
- C语言编写自己的对数函数
- C语言变参函数的编写
- C语言变参函数的编写
- C语言如何编写可变参数函数
- C语言文件操作函数的编写
- 【C语言】编写函数实现字符串旋转
- 【C语言】编写函数实现库函数atof
- C语言编程函数编写一般原则
- pinvmap
- 项目报错:Cannot find class file for javax/servlet/ServletException
- 关于linux中交叉编译器的配置
- pinvred
- 分页函数优化注意点(一):关注业务数据
- c语言常见函数自编写
- 有一行电文,已按下面规律译成密码
- 单片机汇编指令中RETI和RET的区别
- 链表
- django的安装
- 华为机试—整形数组异集
- shell学习三十天----break,continue,shift,getopts
- 在Linux-0.11中实现基于内核栈切换的进程切换
- 51单片机汇编指令详解