C语言学习笔记---字符串对比函数strspn()和strcspn()函数

x33g5p2x  于2021-10-31 转载在 其他  
字(1.1k)|赞(0)|评价(0)|浏览(424)

strspn()函数

如果要对比两个字符串中从第一个字符开始总共有多少个相同字符时,可以使用strspn()函数,它里面有两个参数字符串1和字符串2,从字符串1开始位置依次对比字符串1和字符串2有多少个相同的字符,并且返回相同字符的个数,如果字符串2中没有字符串1中的第一个字符则返回0;

下面通过一个例子来演示strspn()函数的使用方法。

int main(int argc, char *argv[])
{
	char str1[]="abcde";
	char *str2="ab123";
	int ret=0;
	
	puts(str1);	
	ret = strspn(str1,str2);
	printf("%d\r\n",ret);	

	system("pause");
	return 0;
}

定义两个字符串,然后对比这两个字符串中相同字符的数量。输出结果如下:

  输出的结果为2,说明这两个串开头的2个字符时相同的。修改字符串2之后继续测试。

  将字符串2中的“ab”放到“123”的后面,输出的结果依然为2,说明字符串2中的字符不一定需要从第一个开始和字符串1中的相同。继续修改字符串2进行测试。

  虽然字符串2中的"bcde"和字符串1中的一样,但是输出的结果依然为0,说明字符串1和字符串2从第一个位置开始没有相同的字符,就直接结束对比了。

strcspn()函数

strcspn()函数的功能和strspn()函数的功能刚好相反。对比的是字符串1和字符串2中不相同字符的个数。

int main(int argc, char *argv[])
{
	char str1[]="abcde";
	char *str2="ab123";
	int ret=0;
	
	puts(str1);
	
	//ret = strspn(str1,str2);
	ret = strcspn(str1,str2);
	
	printf("%d\r\n",ret);	

	system("pause");
	return 0;
}

依然使用上面的例子,输出结果如下:

  输出结果为0,说明字符串2中有和字符串1中从第一个字符开始相同的字符。

  修改字符串2,将“ab”放到“123”的后面,输出结果依然为0。继续修改字符串2。

  字符串2修改之后,打印的结果为1,说明字符串1中从起始位置开始有1个字符和字符串2不相等。继续修改字符串2。

  此时输出的结果为5,说明字符串1中的5个字符在字符串2中都没有。

相关文章