(原创)不用库函数,实现strcmp()
(2012-09-17 19:46:04)
标签:
杂谈 |
分类: C语言 |
首先我们要了解strcmp()函数用法。百度可以出来:
原型:extern int strcmp(const char *s1,const char * s2);
功能:比较字符串s1和s2。
一般形式:strcmp(字符串1,字符串2)
说明:
当s1<0
当s1=s2时,返回值=0
当s1>s2时,返回值>0
即:两个字符串自左向右逐个字符相比(按ASCII值大小相比较),直到出现不同的字符或遇'\0'为止。
那我们可以构造这个子函数:
//
#include "stdafx.h"
#include
#include
int mystrcmp(char *str1,char *str2)
{
子函数的形参是两个指向字符的指针,在函数调用后为字符串的头指针,在while中的条件是判断两个字符串的指针不为0,从字符串的首字母开始判断,如果,两个字符串的首字母相同,则比较下一个,如果不同,需要判断,如果第一个字符串的字符的ASCLL大于第二个字符串的,输出1,反之,输出-1。
如果第一个字符串没结束,第二个结束了,肯定第一个大,故输出1,反之输出-1。
在主函数中调用:
void main()
{
}
测试与库函数功能一样。
注意:如果两个字符串分别为"abr"和"abcde",应该输出多少呢?
其实在while()中,当比较第二个字符'r'和'c'的时候,判断r的ASCLL大于c的,return 1,跳出子函数,后面的不会再比较了。如定义说的:两个字符串自左向右逐个字符相比(按ASCII值大小相比较),直到出现不同的字符或遇'\0'为止。