必记小程序
1 char* myitoa(int x,char* str){ 2 assert(str!=0); 3 4 int negPos=-1; 5 if(x<0){ 6 negPos=0; 7 str[negPos]='-'; 8 x*=-1; 9 } 10 11 int i,j; 12 i=j=negPos+1; 13 do{ 14 str[j++]=x%10+'0'; 15 x/=10; 16 }while(x!=0); 17 str[j]='\0'; 18 19 j--; 20 while(i<j){ 21 char t=str[i]; 22 str[i]=str[j]; 23 str[j]=t; 24 i++; 25 j--; 26 } 27 return str; 28 } 29 30 bool myatoi(const char *str,int&x){ 31 int neg=1,i=0; 32 if(str[0]=='-'){ 33 neg=-1; 34 i=1; 35 } 36 else if(str[0]=='+'){ 37 i=1; 38 } 39 40 const char* p=str+i; 41 if(*p=='\0') 42 return false; 43 44 x=0; 45 while(*p){ 46 if(*p<'0'||*p>'9') 47 return false; 48 x=x*10+*p-'0'; 49 p++; 50 } 51 x*=neg; 52 return true; 53 } 54 55 char* mystrcpy(char* dest,const char* src){ 56 assert((dest!=0)&&(src!=0)); 57 char* cp=dest; 58 while(*cp++=*src++); 59 return dest; 60 } 61 62 void* mymemcpy(void *dest,const void *src, 63 size_t count){ 64 assert((dest!=0)&&(src!=0)); 65 char* pDest=static_cast<char*>(dest); 66 const char* pSrc= 67 static_cast<const char*>(src); 68 if(pDest>pSrc&&pDest<pSrc+count){ 69 for(int i=count-1;i>=0;--i) 70 pDest[i]=pSrc[i]; 71 } 72 else{ 73 for(int i=0;i<count;i++) 74 pDest[i]=pSrc[i]; 75 } 76 return dest; 77 } 78 79 80 void* mymemset(void* buffer,int c,int count){ 81 assert(buffer!=0); 82 char* p=static_cast<char*>(buffer); 83 while(count>0){ 84 *p++=(char)c; 85 count--; 86 } 87 return buffer; 88 } 89 90 //把一个字符串循环右移n个。eg:n=2,abcdefghi -> hiabcdefg 91 void loopmove(char* pStr,int steps){ 92 int len=strlen(pStr); 93 int n=steps%len; 94 int r=len-n; 95 char* tmp=new char[n]; 96 memcpy(tmp,pStr+r,n); 97 memcpy(pStr+n,pStr,r); 98 memcpy(pStr,tmp,n); 99 delete[]tmp; 100 } 101 102 char* mystrstr(const char* str,const char* strSearch){ 103 assert((str!=0)&&(strSearch!=0)); 104 int n1=strlen(str); 105 int n2=strlen(strSearch); 106 /*if(n2==0) 107 return 0;*/ 108 int i=0,j=0; 109 while(i<n1&&j<n2){ 110 if(str[i]==strSearch[j]){ 111 i++;j++; 112 } 113 else{ 114 i=i-j+1; 115 j=0; 116 } 117 } 118 if(j>=n2) 119 return const_cast<char*>(str+i-j); 120 else 121 return 0; 122 }
int strcmp(const char * p1, const char * p2) {
while (*p1 != '\0' && *p2 != '\0' && *p1 == *p2){
p1++, p2++;
}
if (*p1 == '\0' && *p2 == '\0') return 0;
if (*p1 == '\0') return -1;
if (*p2 == '\0') return 1;
return (*p1 - *p2);
}
待续。。。