C标准库函数实现之strstr
2017-05-23 13:58
176 查看
C标准库函数实现之strstr
昨天去参加一个面试,发现自己的代码水平还是不够,谢了两次才写出来,连基本的标准库实现,都没法做好,遂决定对标准库中的部分函数的实现研习一番。面试的是 char* strstr( char* s1 , char* s2 )函数,自己写的就不说了,写得很烂,不过看了minix代码,里面的实现思路和我一样,Linux的代码中,对这个函数有用汇编来进行实现的,暴汗……
看下Linux下的实现:
char *strstr(const char *s1, const char *s2) { int s1_len, s2_len; s2_len = strlen(s2); if (!s2_len) return (char *)s1;
s1_len = strlen(s1);while (s1_len >= s2_len)
{ s1_len--;
if (!memcmp(s1, s2, s2_len))
return (char *)s1;
s1++;
}
return NULL;
}
思路:
检测字符串安全性,s2为空果断抛弃之。
s1逐个递增,并与s2整串比较内存大小,判断字串是否相等。相等则返回s1,否则s1++,再执行比较。
最后返回空值,代表未找到相符的串
总的来说,这个函数的实现是相当简单的,昨天却没有将它完整答对,虽然思路正确了,但是coding能力不仅在于思路,更在于how to code fast and right。
路漫漫其修远兮,吾将上下而求索。
相关文章推荐
- C标准库函数实现之strstr
- C标准库函数实现之strstr(转)
- 实现strstr 函数
- Linux下文件读写操作一例(C标准库函数方式实现)
- strcpy strlen memcpy strcat strcmp strstr strrev函数的实现代码
- 自己实现基本的C标准库字符串处理函数——基本问题(转载)
- c 重要库函数实现!strcmp strcpy strlen strstr
- strcpy,strcat,strcmp,strstr 实现函数
- strstr strlen strcpy函数实现
- 自定义实现字符串处理函数 strlen strcmp strcpy strncpy strcat strncat strchr strstr
- 自己实现基本的C标准库字符串处理函数——实现strcpy
- strchr(),strstr()函数实现
- strstr()函数原型实现
- 实现c语言strstr函数功能
- strstr和memcmp函数的实现
- 自己动手实现C标准库中sqrt()函数
- c 中实现 replace 函数以及strstr两个函数的实现
- 自己实现基本的C标准库函数——实现memcpy
- 自定义实现字符串处理函数 strlen strcmp strcpy strncpy strcat strncat strchr strstr
- C标准库函数实现之strncpy,strncat