下面是部分C字串操作函數的實現,或許在某些筆試時可以用到!
#ifndef NULL<br />#define NULL ((void *)0)<br />#endif</p><p>/*<br />memcpy的實現代碼<br />*/<br />void* memcpy(void *pDst, void *pSrc, int iLen)<br />{<br />char *pTmp = (char *)pDst;<br />char *pTmp2 = (char *)pSrc;</p><p>if(0 == iLen)<br />return pDst;<br />while(iLen--)<br />*pTmp++ = *pTmp2++;<br />return pDst;<br />}</p><p>/*<br />memset的實現代碼<br />*/<br />void* memset(void *pDst, int iSet, int iLen)<br />{<br />char *pTmp = (char *)pDst;<br />if(0 == iLen)<br />return pDst;<br />while(iLen--)<br />*pTmp++ = (char)iSet;<br />return pDst;<br />}</p><p>/*<br />strcpy的實現代碼<br />*/<br />char *strcpy(char *pDst, char *pSrc)<br />{<br />char *pRst = pDst;<br />do<br />*pDst++ = *pSrc;<br />while(*pSrc++);<br />return pRst;<br />}</p><p>/*<br />strcat的實現代碼<br />*/<br />char *strcat(char *s, char *a)<br />{<br />char *save = s;<br />for(; *s; ++s);<br />while((*s++ = *a++) != 0);<br />return save;<br />}</p><p>/*<br />strlen的實現代碼<br />*/<br />int strlen(char *pStr)<br />{<br />int iLen = 0;<br />while(*pStr++)<br />iLen++;<br />return iLen;<br />}</p><p>/*<br />strcmp的實現<br />*/<br />int strcmp(char *s, char *t)<br />{<br />for(; *s == *t; s++, t++)<br />{<br />if(('/0' == *s) || ('/0' == *t))<br />{<br />if(*s == *t)<br />return 0;<br />else<br />break;<br />}<br />}<br />return ((*s > *t) ? 1 : -1);<br />}</p><p>/*<br />strncmp的實現<br />*/<br />int m_strncmp(char *s, char *t, int n)<br />{<br />if(0 == n)<br />return 0;<br />for (; (--n > 0) && (*s==*t); s++,t++)<br />{<br />if ('/0'==*s)<br />return 0;<br />}<br />if(*s == *t)<br />return 0;<br />return ((*s > *t) ? 1 : -1);<br />}</p><p>/*<br />strstr的實現<br />*/<br />char* strstr(char *s, char *find)<br />{<br />char c, sc;<br />unsigned int len;</p><p>if ((c = *find++) != 0)<br />{<br />len = lzs_strlen(find);<br />do<br />{<br />do<br />{<br />if ((sc = *s++) == 0)<br />return (NULL);<br />} while (sc != c);<br />} while (lzs_strncmp(s, find, len) != 0);<br />s--;<br />}<br />return ((char *)s);<br />}