已阅读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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 参加培训的工作总结6篇
- 鱼类种质检验 第7部分:生态特性分析 编制说明
- DB14T 757-2013高速公路交通安全设施设计指南
- 二次结构施工安全文明施工注意事项
- 2022年度江西省安全员之B证(项目负责人)题库练习试卷B卷附答案
- 网络系统建设与运维(初级) 课件 3.1 认识网络系统
- 2022年度江西省安全员之A证(企业负责人)综合检测试卷A卷含答案
- 2022年度江西省保险代理人考试过关检测试卷A卷附答案
- 必修一 《中国特色社会主义》(冲刺训练)【原卷版】-2024年高考政治三轮冲刺教材本本过(统编版)
- Acid-red-405-生命科学试剂-MCE
- 2024年高考高频英语熟词生义
- 全球及中国无人机分析行业市场现状供需分析及市场深度研究发展前景及规划可行性分析研究报告(2024-2030)
- 污水导流专项方案
- 设计小白的创新工坊智慧树知到期末考试答案2024年
- MOOC 环境影响评价-河海大学 中国大学慕课答案
- 音乐艺术治疗干预在精神科康复中的应用
- 2024年医疗十八项制度
- “金乡大蒜”优势特色产业培育方案(2021-2025 年)
- 流行病学智慧树知到期末考试答案2024年
- MOOC 船舶电力拖动系统-大连海事大学 中国大学慕课答案
- 《阿Q正传》《边城》比较阅读课件15张-统编版高中语文选择性必修下册
评论
0/150
提交评论