c语言实现常见字符串函数strchr strstr strcmp atoi itoi(字符串换成整数)
好久没有更新博客了,刚刚出炉练练手的程序如下,很简单,没有考虑过多复杂的东西,有好的想法,欢迎指教:
字符查找函数:
char *my_strchr(const char *s,int c) { char *pTemp = s; do { if(*pTemp == c) { return pTemp; } } while(*pTemp++); return NULL; }
字符串比较函数:
int my_strcmp(const char *s1,const char *s2) { char *pTemp1 = s1; char *pTemp2 = s2; while(*pTemp1 && *pTemp2 && ((*pTemp1++) == (*pTemp2++))); //{ /*return ((*--pTemp1) - (*--pTemp2));*/ //}// if(*pTemp1 && *pTemp2) { return ((*--pTemp1) - (*--pTemp2)); } if(*pTemp1) { return *pTemp1; } if(*pTemp2) { return -*pTemp2; } return 0; }
字符串查找函数:
char *my_strstr(const char *haystack,const char * needle) { char *pTempSrc = haystack; char *pTempDes = needle; do { if(*pTempSrc != *pTempDes++) { pTempDes = needle; } if(!*pTempDes) { return pTempSrc-(pTempDes-needle)+1; } }while(*pTempSrc++); return NULL; }
内存比较函数:
int my_memcmp(const void *s1,const void *s2,size_t n) { char *pTemp1 = s1; char *pTemp2 = s2; while(n-- > 0) { if(*pTemp1++ != *pTemp2++) { break; } } if(*pTemp1 && *pTemp2) { return ((*--pTemp1) - (*--pTemp2)); } if(*pTemp1) { return *pTemp1; } if(*pTemp2) { return -*pTemp2; } return 0; }
字符串变成数字函数:
int my_atoi(const char *nptr) { char *pTemp = nptr; int sum = 0; unsigned flag = 0; if(*pTemp == '-') { flag = 1; pTemp++; } do { if((*pTemp >= '0') && (*pTemp <= '9')) { sum *= 10; sum += (*pTemp - '0'); } else { return -1; } }while(*++pTemp); return (flag == 0 ? sum : -sum); }
数字变成字符串函数:
int my_itoa(int val,char *ret) { char *pTemp = ret; int bits = 0; int flag = 0; if(val < 0) { flag = 1; val = 0-val; pTemp++; ret[0] = '-'; } //printf("val %d\n",val); while(val) { (*pTemp++) = val%10 + '0'; bits++; //printf("%d \n",val); val = val / 10; } *pTemp = '\0'; //printf("%s \n",ret); //fan zhuan int i = 0; int temp = 0; for( i = 0; i < bits/2; i++) { temp = ret[i+1]; ret[i+1] = ret[bits-i-1-1]; ret[bits-i-1-1] = temp; } return 1; }
上传完毕,欢迎园友指正,谢谢!