C语言中函数strlen等的实现
2016-07-18 17:35
302 查看
#include <stdio.h>
//#include <string.h>
#define MAX_SIZE 1024/*把值定义在外面容易修改*/
int my_strlen(char *str)
{
int len = 0;
while(*str != '\0')
{
len++;
str++;
}
return len;
}
char*my_strcpy(char*dest,char*str1)
{
char*temp = dest;/*不要用形参作运算,否则返回值将不是dest的首地址*/
while(*str1 !='\0')
{
*temp = *str1;
temp++;
str1++;
}
*temp = '\0';/*手动加上结束标志符*/
return dest;
}
int my_strcmp(char*str2,char*str3)
{
while(*str2 != '\0'&& *str3 != '\0')
{
if(*str2 <* str3)
{
return -1;
}
if(*str2 > *str3)
{
return 1;
}
str2++;
str3++;
}
if((*str2 == '\0')&&(*str3 == '\0'))
return 0;
if((*str2 == '\0')&&(*str3 != '\0'))
return -1;
if((*str2 != '\0')&&(*str3 == '\0'))
return 1;
}
char*my_strcat(char*str4,char*str5)
{
char*result = str4;
//char*result2 = str5;
while(*result != '\0')
{
result++;
}
//char*result1 = result;
while(*str5 !='\0')
{
*result = *str5;
str5++;
result++;
}
*result = '\0';
return str4;
}
int main()
{
int result;
char str[MAX_SIZE];
printf("请输入一个字符:\n");
scanf("%s",str);
result = my_strlen(str);
printf("字符的长度为:%d\n",result);
char str1[MAX_SIZE];
char dest[MAX_SIZE] = {0};
printf("请输入一个字符串:\n");
scanf("%s",str1);
char*result2 = my_strcpy (dest,str1);
printf("dest = %s\n",dest);
printf("result2 = %s\n",result2);
char str2[MAX_SIZE];
char str3[MAX_SIZE];
printf("请输入第一个字符串:\n");
scanf("%s",str2);
printf("请输入第二个字符串:\n");
//getchar();
scanf("%s",str3);
//getchar();
int result3 = my_strcmp(str2,str3);
printf("result3 = %d\n",result3);
char str4[MAX_SIZE];
char str5[MAX_SIZE];
printf("请输入第一个字符串:\n");
scanf("%s",str4);/*gets函数可以录入空格,但空格在数组里面显示成‘‘\0’*/
//gets(str4);
printf("请输入第二个字符串:\n");
scanf("%s",str5);
//gets(str5);
char *result4 = my_strcat(str4,str5);
printf("result4 = %s\n",result4);
return 0;
}
//#include <string.h>
#define MAX_SIZE 1024/*把值定义在外面容易修改*/
int my_strlen(char *str)
{
int len = 0;
while(*str != '\0')
{
len++;
str++;
}
return len;
}
char*my_strcpy(char*dest,char*str1)
{
char*temp = dest;/*不要用形参作运算,否则返回值将不是dest的首地址*/
while(*str1 !='\0')
{
*temp = *str1;
temp++;
str1++;
}
*temp = '\0';/*手动加上结束标志符*/
return dest;
}
int my_strcmp(char*str2,char*str3)
{
while(*str2 != '\0'&& *str3 != '\0')
{
if(*str2 <* str3)
{
return -1;
}
if(*str2 > *str3)
{
return 1;
}
str2++;
str3++;
}
if((*str2 == '\0')&&(*str3 == '\0'))
return 0;
if((*str2 == '\0')&&(*str3 != '\0'))
return -1;
if((*str2 != '\0')&&(*str3 == '\0'))
return 1;
}
char*my_strcat(char*str4,char*str5)
{
char*result = str4;
//char*result2 = str5;
while(*result != '\0')
{
result++;
}
//char*result1 = result;
while(*str5 !='\0')
{
*result = *str5;
str5++;
result++;
}
*result = '\0';
return str4;
}
int main()
{
int result;
char str[MAX_SIZE];
printf("请输入一个字符:\n");
scanf("%s",str);
result = my_strlen(str);
printf("字符的长度为:%d\n",result);
char str1[MAX_SIZE];
char dest[MAX_SIZE] = {0};
printf("请输入一个字符串:\n");
scanf("%s",str1);
char*result2 = my_strcpy (dest,str1);
printf("dest = %s\n",dest);
printf("result2 = %s\n",result2);
char str2[MAX_SIZE];
char str3[MAX_SIZE];
printf("请输入第一个字符串:\n");
scanf("%s",str2);
printf("请输入第二个字符串:\n");
//getchar();
scanf("%s",str3);
//getchar();
int result3 = my_strcmp(str2,str3);
printf("result3 = %d\n",result3);
char str4[MAX_SIZE];
char str5[MAX_SIZE];
printf("请输入第一个字符串:\n");
scanf("%s",str4);/*gets函数可以录入空格,但空格在数组里面显示成‘‘\0’*/
//gets(str4);
printf("请输入第二个字符串:\n");
scanf("%s",str5);
//gets(str5);
char *result4 = my_strcat(str4,str5);
printf("result4 = %s\n",result4);
return 0;
}
相关文章推荐
- c/c++ 数组和指针的一些不同之处
- 下面对 C++ 静态数据成员的描述中,正确的是?
- c#调用第三方c++嵌套结构体内联体方式
- 用c++ 通过thrift2 访问hbase数据库
- 下面有关c++线程安全,说法错误的是?
- C++ 程序延时处理的几种方法
- C++ vector容器find查询函数
- Cpp环境【Uva10815】【Vijos2785】安迪的第一本字典
- c语言指针之排序两数大小
- C语言 10进制转16进制
- ROS学习之 cpp参数服务器
- CF55D Beautiful numbers (数位DP)
- C语言sscanf函数的总结
- Leetcode 14. Longest Common Prefix (Easy) (cpp)
- MFC GDI+基础
- leetcode_c++:链表:Odd Even Linked List(328)
- C++面试基础整理
- C++ 静态库与动态库
- C语言二分查找算法及实现代码
- 【C语言入门教程】7.5 枚举