linux内核字符串逆序,Linux内核中常用字符串函数实现
//列舉了部分常用的strcpy,strcmp,strcat,strchr,strstr,strpbrk...
char?*strcpy(char?*dest,?const?char?*src)
{
char?*tmp?=?dest;
while?((*dest++?=?*src++)?!=?'\0')
/*?nothing?*/;
return?tmp;
}
char?*strncpy(char?*dest,?const?char?*src,?size_t?count)
{
char?*tmp?=?dest;
while?(count)?{
if?((*tmp?=?*src)?!=?0)
src++;
tmp++;
count--;
}
return?dest;
}
char?*strcat(char?*dest,?const?char?*src)
{
char?*tmp?=?dest;
while?(*dest)
dest++;
while?((*dest++?=?*src++)?!=?'\0')
;
return?tmp;
}
char?*strncat(char?*dest,?const?char?*src,?size_t?count)
{
char?*tmp?=?dest;
if?(count)?{
while?(*dest)
dest++;
while?((*dest++?=?*src++)?!=?0)?{
if?(--count?==?0)?{
*dest?=?'\0';
break;
}
}
}
return?tmp;
}
int?strcmp(const?char?*cs,?const?char?*ct)
{
signed?char?__res;
while?(1)?{
if?((__res?=?*cs?-?*ct++)?!=?0?||?!*cs++)
break;
}
return?__res;
}
int?strncmp(const?char?*cs,?const?char?*ct,?size_t?count)
{
signed?char?__res?=?0;
while?(count)?{
if?((__res?=?*cs?-?*ct++)?!=?0?||?!*cs++)
break;
count--;
}
return?__res;
}
char?*strchr(const?char?*s,?int?c)
{
for?(;?*s?!=?(char)c;?++s)
if?(*s?==?'\0')
return?NULL;
return?(char?*)s;
}
char?*strrchr(const?char?*s,?int?c)
{
const?char?*p?=?s?+?strlen(s);
do?{
if?(*p?==?(char)c)
return?(char?*)p;
}?while?(--p?>=?s);
return?NULL;
}
char?*strnchr(const?char?*s,?size_t?count,?int?c)
{
for?(;?count--?&&?*s?!=?'\0';?++s)
if?(*s?==?(char)c)
return?(char?*)s;
return?NULL;
}
size_t?strlen(const?char?*s)
{
const?char?*sc;
for?(sc?=?s;?*sc?!=?'\0';?++sc)
/*?nothing?*/;
return?sc?-?s;
}
char?*strpbrk(const?char?*cs,?const?char?*ct)
{
const?char?*sc1,?*sc2;
for?(sc1?=?cs;?*sc1?!=?'\0';?++sc1)?{
for?(sc2?=?ct;?*sc2?!=?'\0';?++sc2)?{
if?(*sc1?==?*sc2)
return?(char?*)sc1;
}
}
return?NULL;
}
void?*memcpy(void?*dest,?const?void?*src,?size_t?count)
{
char?*tmp?=?dest;
const?char?*s?=?src;
while?(count--)
*tmp++?=?*s++;
return?dest;
}
int?memcmp(const?void?*cs,?const?void?*ct,?size_t?count)
{
const?unsigned?char?*su1,?*su2;
int?res?=?0;
for?(su1?=?cs,?su2?=?ct;?0?
if?((res?=?*su1?-?*su2)?!=?0)
break;
return?res;
}
char?*strstr(const?char?*s1,?const?char?*s2)
{
int?l1,?l2;
l2?=?strlen(s2);
if?(!l2)
return?(char?*)s1;
l1?=?strlen(s1);
while?(l1?>=?l2)?{
l1--;
if?(!memcmp(s1,?s2,?l2))
return?(char?*)s1;
s1++;
}
return?NULL;
}
來(lái)源:?http://blog..net/willib/article/details/38460691
總結(jié)
以上是生活随笔為你收集整理的linux内核字符串逆序,Linux内核中常用字符串函数实现的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 何小鹏:王凤英一周工作七天、让大家很卷
- 下一篇: 未刷新 6.3 万美元纪录,RR Auc