您的位置:首页 > 编程语言 > C语言/C++

C语言strcmp()函数是如何实现的

2011-09-13 00:00 686 查看
函数 int stringcompare(char *source, char *target) 比较字符串 source 和 target,并根据 source 是否小于、等于或大于 target 的结果分别返回负整数、0或者整数。该返回值是 source 和 target 由前后逐字符比较时遇到的第一个不相等字符处的字符的差值。

#include <stdio.h>
int stringcompare(char *source, char *target);
int main()
{
	char str_a[] = "Welcome to www.nowamagic.net";
	char str_b[] = "Welcome to www.nowamagic.net";
	int wait, result;
	result = stringcompare(str_b, str_a);
	printf("After Function Call: \n");
	printf("result is '%d' \n", result);
	scanf("%d", &wait);
}
/* 根据 source 按照字典顺序小于、等于或大于 target 的结果分别返回负整数、0或者整数 */
int stringcompare(char *source, char *target)
{
	int i;
	for(i = 0; source[i] == target[i]; i++)
	{
		if (source[i] == '\0')
			return 0;
		return source[i] - target[i];
	}
}

下面再用指针实现:


int stringcompare(char *source, char *target)
{
	for ( ; *source == *target; source++, target++)
		if (*source == '\0')
			return 0;
		return *source - *target;
}


关于指针自增与自减有下面一种用法:


/* 将val压入栈 */
*p++ = val;
/* 将栈顶元素弹出到val中 */
val = *--p;


这两个表达式是进栈和出栈的标准用法。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: