strcmp()函数与strcpy()函数介绍

  1. strcmp函数与strncmp函数

在前面的文章中我们看到了strcat函数及它更安全的用法strncat。

接下来我们谈谈strcmp函数及其安全的用法strncmp。

strcmp函数的作用是比较字符串,用法如下strcmp(字符串1,字符串2),它会比较这两个字符串,如果字符串相等,

返还0.

考虑下面的代码。

#include<stdio.h>
#include<string.h>
int main()
{
	char *ch = "hell word";
	char *ch1 = "hello word";
	char ch2[40] = "hello word";
	int a = strcmp(ch, ch1);//不一样的比较,
	int b = strcmp(ch1, ch2);//一样的比较
	printf("%d %d", a, b);
	getch();
	return 0;
}

输出结果是 -1 0;前面告诉大家如果字符串相同返还0;但如果不同呢。

如果:比较单个字符串,比如“A”与“B”,则返还-1;同理,“B’与”A"返还1;返还的值可能不同,只要不是0不就很好。

这个比较与AS||码有关。但如果两个字符串前面几个字母相同,那么strcmp函数会一个一个挨着比较。

对于strncmp函数来讲,比较有了限定strcmp(字符串1,字符串2,限定数字),有了限定数字后,该函数会比较你所限定的

前几个字符。

2.strcpy与strncpy

strcpy函数的作用是拷贝,拷贝出来的字符串叫目标字符串,最初的字符串被称为源字符串

用法:strcpy(字符串数组,字符串)。

看下面的代码

#include<stdio.h>
#include<string.h>
int main()
{
	char ch[100];
	char *p = "hell word";
	printf("%s", strcpy(ch, p));
	getch();
	return 0;
}

输出结果:hell word。

从输出结果我们可以看出,该函数返还的是第一个参数的地址。

同理更安全的选择是strncpy,你可以在最后的参数写上一个数字,来确保拷贝的最大字符数,注意\0.

考虑下面的代码

#include<stdio.h>
#include<string.h>
int main()
{
	char ch[5];
	char *p = "hell word";
	strncpy(ch, p, 3);//这样写是对的
	ch[4] = '\0';//如果没有的话,ch就不是一个字符数组
	printf("%s", ch);

	getch();
	return 0;
}

运行一下程序,你会发现字符的拷贝不会为你自己添加空字符,考虑一下是否需要添加空字符。

猜你喜欢

转载自blog.csdn.net/qq_43702629/article/details/84481937
今日推荐