阅读背景:

strcmp函数的两种实现

来源:互联网 
摘自 https://www.iteye.com/topic/790388
#include<stdio.h>

int strcmp(const char *str1,const char *str2)
{
	/* 注释以下的五行(while循环)可以简写为:
	 * for(;(*str1==*str2)&&*str1!='
摘自 https://www.iteye.com/topic/790388
#include<stdio.h>

int strcmp(const char *str1,const char *str2)
{
	/* 注释以下的五行(while循环)可以简写为:
	 * for(;(*str1==*str2)&&*str1!='\0';str1++,str2++);
	 *  */
	while((*str1==*str2)&&*str1!='\0')
	{
		str1++;
		str2++;
	}

	if(*str1=='\0'&&*str2=='\0') return 1;
	else return -1;
}

int main()
{
	char *st1="abdefg";
	char *st2="abcdefg";
	printf("%d\n",strcmp(st1,st2));

	char *st3="12345";
	char *st4="12345";
	printf("%d\n",strcmp(st3,st4));

	return 0;
}

#include<stdio.h>

int strcmp(const char *str1,const char *str2)
{
	while(str1!=NULL&&str2!=NULL)
	{
		while(*str1++==*str2++)
		{
			if(*str1=='\0'&&*str2=='\0') return 1;
		}
		
		return -1; //不等的情况
	}

	return -2; //有指针为空的情况
}

int main()
{
	char *st1="abdefg";
	char *st2="abcdefg";
	printf("%d\n",strcmp(st1,st2));

	char *st3="12345";
	char *st4="12345";
	printf("%d\n",strcmp(st3,st4));

	char *st5="xyz",*st6=NULL;
	printf("%d\n",strcmp(st5,st6));

	return 0;
}

在下在gcc的编译器当中编译通过。

';str1++,str2++); * */ while((*str1==*str2)&&*str1!='
摘自 https://www.iteye.com/topic/790388
#include<stdio.h>

int strcmp(const char *str1,const char *str2)
{
	/* 注释以下的五行(while循环)可以简写为:
	 * for(;(*str1==*str2)&&*str1!='\0';str1++,str2++);
	 *  */
	while((*str1==*str2)&&*str1!='\0')
	{
		str1++;
		str2++;
	}

	if(*str1=='\0'&&*str2=='\0') return 1;
	else return -1;
}

int main()
{
	char *st1="abdefg";
	char *st2="abcdefg";
	printf("%d\n",strcmp(st1,st2));

	char *st3="12345";
	char *st4="12345";
	printf("%d\n",strcmp(st3,st4));

	return 0;
}

#include<stdio.h>

int strcmp(const char *str1,const char *str2)
{
	while(str1!=NULL&&str2!=NULL)
	{
		while(*str1++==*str2++)
		{
			if(*str1=='\0'&&*str2=='\0') return 1;
		}
		
		return -1; //不等的情况
	}

	return -2; //有指针为空的情况
}

int main()
{
	char *st1="abdefg";
	char *st2="abcdefg";
	printf("%d\n",strcmp(st1,st2));

	char *st3="12345";
	char *st4="12345";
	printf("%d\n",strcmp(st3,st4));

	char *st5="xyz",*st6=NULL;
	printf("%d\n",strcmp(st5,st6));

	return 0;
}

在下在gcc的编译器当中编译通过。

') { str1++; str2++; } if(*str1=='
摘自 https://www.iteye.com/topic/790388
#include<stdio.h>

int strcmp(const char *str1,const char *str2)
{
	/* 注释以下的五行(while循环)可以简写为:
	 * for(;(*str1==*str2)&&*str1!='\0';str1++,str2++);
	 *  */
	while((*str1==*str2)&&*str1!='\0')
	{
		str1++;
		str2++;
	}

	if(*str1=='\0'&&*str2=='\0') return 1;
	else return -1;
}

int main()
{
	char *st1="abdefg";
	char *st2="abcdefg";
	printf("%d\n",strcmp(st1,st2));

	char *st3="12345";
	char *st4="12345";
	printf("%d\n",strcmp(st3,st4));

	return 0;
}

#include<stdio.h>

int strcmp(const char *str1,const char *str2)
{
	while(str1!=NULL&&str2!=NULL)
	{
		while(*str1++==*str2++)
		{
			if(*str1=='\0'&&*str2=='\0') return 1;
		}
		
		return -1; //不等的情况
	}

	return -2; //有指针为空的情况
}

int main()
{
	char *st1="abdefg";
	char *st2="abcdefg";
	printf("%d\n",strcmp(st1,st2));

	char *st3="12345";
	char *st4="12345";
	printf("%d\n",strcmp(st3,st4));

	char *st5="xyz",*st6=NULL;
	printf("%d\n",strcmp(st5,st6));

	return 0;
}

在下在gcc的编译器当中编译通过。

'&&*str2=='
摘自 https://www.iteye.com/topic/790388
#include<stdio.h>

int strcmp(const char *str1,const char *str2)
{
	/* 注释以下的五行(while循环)可以简写为:
	 * for(;(*str1==*str2)&&*str1!='\0';str1++,str2++);
	 *  */
	while((*str1==*str2)&&*str1!='\0')
	{
		str1++;
		str2++;
	}

	if(*str1=='\0'&&*str2=='\0') return 1;
	else return -1;
}

int main()
{
	char *st1="abdefg";
	char *st2="abcdefg";
	printf("%d\n",strcmp(st1,st2));

	char *st3="12345";
	char *st4="12345";
	printf("%d\n",strcmp(st3,st4));

	return 0;
}

#include<stdio.h>

int strcmp(const char *str1,const char *str2)
{
	while(str1!=NULL&&str2!=NULL)
	{
		while(*str1++==*str2++)
		{
			if(*str1=='\0'&&*str2=='\0') return 1;
		}
		
		return -1; //不等的情况
	}

	return -2; //有指针为空的情况
}

int main()
{
	char *st1="abdefg";
	char *st2="abcdefg";
	printf("%d\n",strcmp(st1,st2));

	char *st3="12345";
	char *st4="12345";
	printf("%d\n",strcmp(st3,st4));

	char *st5="xyz",*st6=NULL;
	printf("%d\n",strcmp(st5,st6));

	return 0;
}

在下在gcc的编译器当中编译通过。

') return 1; else return -1; } int main() { char *st1="abdefg"; char *st2="abcdefg"; printf("%d\n",strcmp(st1,st2)); char *st3="12345"; char *st4="12345"; printf("%d\n",strcmp(st3,st4)); return 0; }#includ



你的当前访问异常,请进行认证后继续阅读剩余内容。

分享到: