自定义实现strlen()计算字符串功能
#include <stdio.h>
#include <stdlib.h>
void mystrlen(char *ptr)
{
int i = 0;
while(*(ptr + i) != '\0')// while(*ptr++ != '\0')
{
i++;
}
printf("%d\n", i);
}
int main()
{
char *str;
str = (char *)malloc(sizeof(char)* 64);
printf("please input a string:\n");
scanf("%s", str);
mystrlen(str);
return 0;
}
自定义实现strcmp()比较字符串大小功能
#include <stdio.h>
#include <stdlib.h>
int mystrcmp(char *str, char *ptr)
{
int i = 0;
while (*(str + i) != '\0' && *(ptr + i) != '\0')
{
if(*str > *ptr)
{
return 1;
}
else if(*str < *ptr)
{
return -1;
}
i++;
}
if(*str != '\0')
{
return 1;
}
if(*ptr != '\0')
{
return -1;
}
return 0;
}
int main()
{
int i;
char *str, *ptr;
str = (char *)malloc(sizeof(char)*64);
ptr = (char *)malloc(sizeof(char)*64);
printf("please input two strings:\n");
scanf("%s%s", str, ptr);
i = mystrcmp(str, ptr);
if(i == 0)
{
printf("%s = %s", str, ptr);
}
if(i == 1)
{
printf("%s > %s", str, ptr);
}
if(i == -1)
{
printf("%s < %s", str, ptr);
}
return 0;
}
总结:
1,定义了一个指针,一定要用malloc函数为它分配内存,不然就为野指针,虽然编译时没问题,但运行时会报错, 产生段错误
2,自定义函数利用return 带回返回值结束while循环,此时函数类型不能习惯性的定义为void