C语言字符串函数实现源码汇总.doc_第1页
C语言字符串函数实现源码汇总.doc_第2页
C语言字符串函数实现源码汇总.doc_第3页
C语言字符串函数实现源码汇总.doc_第4页
C语言字符串函数实现源码汇总.doc_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C语言字符串函数实现源码汇总2008年05月18日 星期日 16:541 /*2 * linux/lib/string.c3 *4 * Copyright (C) 1991, 1992 Linus Torvalds5 */6 7 /*8 * stupid library routines. The optimized versions should generally be found9 * as inline code in 10 *11 * These are buggy as well.12 */1314 #include 15 16 char * _strtok = NULL;17 18 char * strcpy(char * dest,const char *src)19 20 char *tmp = dest;21 22 while (*dest+ = *src+) != 0)23 ;24 return tmp;25 26 27 char * strncpy(char * dest,const char *src,size_t count)28 29 char *tmp = dest;30 31 while (count- & (*dest+ = *src+) != 0)32 /* nothing */;33 34 return tmp;35 36 37 char * strcat(char * dest, const char * src)38 39 char *tmp = dest;40 41 while (*dest)42 dest+;43 while (*dest+ = *src+) != 0)44 ;45 46 return tmp;47 48 49 char * strncat(char *dest, const char *src, size_t count)50 51 char *tmp = dest;52 53 if (count) 54 while (*dest)55 dest+;56 while (*dest+ = *src+) 57 if (-count = 0)58 break;59 60 61 62 return tmp;63 64 65 int strcmp(const char * cs,const char * ct)66 67 register signed char _res;68 69 while (1) 70 if (_res = *cs - *ct+) != 0 | !*cs+)71 break;72 73 74 return _res;75 76 77 int strncmp(const char * cs,const char * ct,size_t count)78 79 register signed char _res = 0;80 81 while (count) 82 if (_res = *cs - *ct+) != 0 | !*cs+)83 break;84 count-;85 86 87 return _res;88 89 90 char * strchr(const char * s,char c)91 92 for(; *s != c; +s)93 if (*s = 0)94 return NULL;95 return (char *) s;96 97 98 size_t strlen(const char * s)99 100 const char *sc;101 102 for (sc = s; *sc != 0; +sc)103 /* nothing */;104 return sc - s;105 106 107 size_t strnlen(const char * s, size_t count)108 109 const char *sc;110 111 for (sc = s; *sc != 0 & count-; +sc)112 /* nothing */;113 return sc - s;114 115 116 size_t strspn(const char *s, const char *accept)117 118 const char *p;119 const char *a;120 size_t count = 0;121 122 for (p = s; *p != 0; +p) 123 for (a = accept; *a != 0; +a) 124 if (*p = *a)125 break;126 127 if (*a = 0)128 return count;129 +count;130 131 132 return count;133 134 135 char * strpbrk(const char * cs,const char * ct)136 137 const char *sc1,*sc2;138 139 for( sc1 = cs; *sc1 != 0; +sc1) 140 for( sc2 = ct; *sc2 != 0; +sc2) 141 if (*sc1 = *sc2)142 return (char *) sc1;143 144 145 return NULL;146 147 148 char * strtok(char * s,const char * ct)149 150 char *sbegin, *send;151 152 sbegin = s ? s : _strtok;153 if (!sbegin) 154 return NULL;155 156 sbegin += strspn(sbegin,ct);157 if (*sbegin = 0) 158 _strtok = NULL;159 return( NULL );160 161 send = strpbrk( sbegin, ct);162 if (send & *send != 0)163 *send+ = 0;164 _strtok = send;165 return (sbegin);166 167 168 void * memset(void * s,char c,size_t count)169 170 char *xs = (char *) s;171 172 while (count-)173 *xs+ = c;174 175 return s;176 177 178 char * bcopy(const char * src, char * dest, int count)179 180 char *tmp = dest;181 182 while (count-)183 *tmp+ = *src+;184 185 return dest;186 187 188 void * memcpy(void * dest,const void *src,size_t count)189 190 char *tmp = (char *) dest, *s = (char *) src;191 192 while (count-)193 *tmp+ = *s+;194 195 return dest;196 197 198 void * memmove(void * dest,const void *src,size_t count)199 200 char *tmp, *s;201 202 if (dest = src) 203 tmp = (char *) dest;204 s = (char *) src;205 while (count-)206 *tmp+ = *s+;207 208 else 209 tmp = (char *) dest + count;210 s = (char *) src + count;211 while (count-)212 *-tmp = *-s;213 214 215 return dest;216 217 218 int memcmp(const void * cs,const void * ct,size_t count)219 220 const unsigned char *su1, *su2;221 signed char res = 0;222 223 for( su1 = cs, su2 = ct; 0 =0&*str=0&*str=9) result = result*10+(*str+ -0); return signal*result; double atof(char s) double val, power; int i, sign; for (i = 0; isspace(si); i+) /* skip white space */ ; sign = (si = -) ? -1 : 1; if (si = + | si = -) i+; for (val = 0.0; isdigit(si); i+) val = 10.0 * val + (si - 0); if (si = .) i+; for (power = 1.0; isdigit(si); i+) val = 10.0 * val + (si -0); power *= 10; return sign * val / power; long _cdecl atol(const char* nptr) int c; int sign; long total; while(isspace(int)(unsigned char)*nptr) +nptr; c =(int)(unsigned char)*nptr+; sign = c;

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论