




免費(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 中國(guó)純鋁酸鈣水泥行業(yè)發(fā)展前景預(yù)測(cè)及投資策略研究報(bào)告
- 2025年EHPS電液泵市場(chǎng)環(huán)境分析
- 2025年中國(guó)AGV機(jī)器人行業(yè)市場(chǎng)調(diào)查研究及發(fā)展趨勢(shì)預(yù)測(cè)報(bào)告
- 2025年中國(guó)隱形文胸市場(chǎng)運(yùn)行態(tài)勢(shì)及戰(zhàn)略咨詢研究報(bào)告
- 2020-2025年中國(guó)蘋果種植行業(yè)競(jìng)爭(zhēng)格局分析及投資戰(zhàn)略咨詢報(bào)告
- 2025年技術(shù)檢測(cè)與標(biāo)準(zhǔn)認(rèn)證服務(wù)項(xiàng)目提案報(bào)告模板
- 中國(guó)禽嗓子喉寶片劑行業(yè)市場(chǎng)發(fā)展前景及發(fā)展趨勢(shì)與投資戰(zhàn)略研究報(bào)告(2024-2030)
- 中國(guó)紙幣清分機(jī)行業(yè)市場(chǎng)全景監(jiān)測(cè)及投資策略研究報(bào)告
- 2025年中國(guó)和室整體裝修行業(yè)市場(chǎng)發(fā)展前景及發(fā)展趨勢(shì)與投資戰(zhàn)略研究報(bào)告
- 安全生產(chǎn)費(fèi)用投入與管理制度
- 最新纏論基礎(chǔ)知識(shí)大全共課件
- SHSG0522023年石油化工裝置工藝設(shè)計(jì)包(成套技術(shù))內(nèi)容規(guī)定
- 2022年中國(guó)重癥患者轉(zhuǎn)運(yùn)指南-2
- 中學(xué)生日常行為習(xí)慣養(yǎng)成課題計(jì)劃2
- 懸臂澆筑連續(xù)梁梁體鋼筋施工技術(shù)交底
- 滬教牛津版小學(xué)一至六年級(jí)英語(yǔ)單詞匯總(最新)
- 計(jì)價(jià)格(2002)10號(hào)文
- 從銷售員到銷售總監(jiān)的六門必修課
- 《云南省建筑工程資料管理規(guī)程應(yīng)用指南)(上下冊(cè))
- 工程更改控制程序DFCPQEOMS-06
- 送電線路工程跨越河流架線施工專項(xiàng)方案
評(píng)論
0/150
提交評(píng)論