




免費(fèi)預(yù)覽已結(jié)束,剩余1頁(yè)可下載查看
下載本文檔
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
C字符串函數(shù)底層實(shí)現(xiàn)1 /*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 */13 14 #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 /* nothing */;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 count; +su1, +su2, count-)224 if (res = *su1 - *su2) != 0)225 break;226 return res;227 228 229 /*230 * find the first occurrence of byte c, or 1 past the area if none231 */232 void * memscan(vo
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 廣西賀州市本年度(2025)小學(xué)一年級(jí)數(shù)學(xué)統(tǒng)編版期中考試((上下)學(xué)期)試卷及答案
- 江西省撫州市臨川區(qū)一中2025年高考英語(yǔ)考前最后一卷預(yù)測(cè)卷含答案
- 2025年天津市七校靜海一中楊村中學(xué)高三壓軸卷英語(yǔ)試卷含答案
- 臨床診斷學(xué)模擬練習(xí)題(附答案)
- 山西省晉城市部分學(xué)校2024-2025學(xué)年高一下學(xué)期期中考試數(shù)學(xué)試題(原卷版+解析版)
- 電纜線路敷設(shè)工程中的質(zhì)量控制與驗(yàn)收流程考核試卷
- 糧食儲(chǔ)備的社會(huì)責(zé)任考核試卷
- 再生物資回收在綠色供應(yīng)鏈中的作用考核試卷
- 稀土金屬提煉過(guò)程中的政策法規(guī)研究與實(shí)踐考核試卷
- 職場(chǎng)情緒智能與人際溝通考核試卷
- 磚砌蓄水池施工方案(模板)
- 湖南省2023年普通高等學(xué)校對(duì)口招生考試電子電工
- 《運(yùn)營(yíng)管理》案例庫(kù)
- 煤礦安全監(jiān)控系統(tǒng)設(shè)備管理報(bào)廢制度
- 機(jī)關(guān)事業(yè)單位退休人員養(yǎng)老金領(lǐng)取資格確認(rèn)表
- 2019阿那亞金山嶺中心小鎮(zhèn)生活手冊(cè)
- 第五屆“國(guó)藥工程杯”全國(guó)大學(xué)生制藥工程設(shè)計(jì)競(jìng)賽
- 人體穴位與天體對(duì)應(yīng)解密
- 柔性主動(dòng)防護(hù)網(wǎng)分項(xiàng)工程質(zhì)量檢驗(yàn)評(píng)定表
- 中機(jī)2015~2016年消防系統(tǒng)維保養(yǎng)護(hù)年度總結(jié)報(bào)告
- Kappa量測(cè)能力測(cè)評(píng)及評(píng)價(jià)
評(píng)論
0/150
提交評(píng)論