不使用库函数编写strlen函数
2012-10-04 20:11
218 查看
不使用库函数,甚至不使用变量来写出strlen函数,或者字符串的其他函数是笔试、面试等中经常会遇到的一个问题。
下面贴出代码分享。
my_strlen1函数采用的是递归策略,没有使用任何变量。编写递归时要考虑递归深度,有时会造成栈溢出。
my_strlen2函数采用简单的迭代,容易理解。
还有其他类型的,比如,不使用库函数写出两个字符串连接的函数,字符串比较的函数等等。
下面贴出代码分享。
#include <stdio.h> #include <stdlib.h> #include <string.h> int my_strlen1(const char *str)//递归 { return ('\0' != *str) ? (1+my_strlen1(++str)) : 0; } int my_strlen2(const char *str)//迭代 { int count = 0; while (*str != '\0') { count++; str++; } return count; } int main() { char *p; p = (char *)malloc(100*sizeof(char)); while (scanf("%s",p) != EOF) { int count1 = 0,count2 = 0,count3 = 0; count1 = my_strlen1(p); count2 = my_strlen2(p); count3 = strlen(p); printf("count1 = %d, count2 = %d, coont3 = %d\n",count1,count2,count3); } free(p); return 0; }
my_strlen1函数采用的是递归策略,没有使用任何变量。编写递归时要考虑递归深度,有时会造成栈溢出。
my_strlen2函数采用简单的迭代,容易理解。
还有其他类型的,比如,不使用库函数写出两个字符串连接的函数,字符串比较的函数等等。
相关文章推荐
- 不允许调用库函数,也不允许使用任何全局或局部变量编写strlen函数
- 不允许调用库函数,也不允许使用任何全局或局部变量编写strlen函数
- C_ideas不允许调用库函数,也不允许使用任何全局或局部变量编写 int strlen(char *strDest);
- 不使用库函数,编写函数int strcmp(char *source, char *dest) 相等返回0,不等返回-1【转】
- 不使用库函数,编写函数int strcmp(char *source, char *dest) 相等返回0,不等返回-1;
- 不使用库函数,编写函数int strcmp(char *source, char *dest) 相等返回0,不等返回-1
- 不能使用任何库函数,编写memcpy函数
- 不使用库函数,编写函数int strcmp(char *source, char *dest) 相等返回0,不等返回-1;
- 不使用任何变量编写是strlen函数(递归)
- 字符串---不使用库函数,编写函数strcpy
- 不使用库函数实现strcpy,strlen函数
- 遇到的一个面试题:编写一个strlen函数,不能使用全局变量或者局部变量
- 不使用库函数,编写函数int strcmp(char *source, char *dest)
- 编写一个strlen函数,不使用变量
- 不使用库函数,编写函数int strcmp(char *source,char *dest),相等返回0,不等返回-1
- 不使用库函数和变量,实现Strlen函数
- 使用Qt编写服务器端程序(包括Http传输服务器端)的方法
- 安装使用protobuf,及使用C++编写多线程通信
- 使用JAVA编写网络通信程序
- 使用import调用下载或自己编写的模块