C/C++中strcpy,strcat,strstr以及strncpy,strncat,strncmp的使用

  1、首先我们来介绍strcpy的使用从这个函数的名字来看它应该是属于字符串的拷贝,string copy。 那么这个函数是怎么用的呢?下面我么来介绍她的基本结构。

char * strcpy ( char * destination, const char * source );

 由上述可知它需要两部分 一个是目标字符和来源字符,顾名思义也就是把source中的字符或字符串拷贝进destination中,下面我们来介绍一个例子:

char arr1[20] = "dadsdasa";
char arr2[] = "aaaaa";
strcpy(arr1, arr2);
std::cout << arr1 << std::endl;

 大家不如猜一猜运行结果是什么?

也就是将爱arr2中的所有内容都拷贝到arr1中,但是这种拷贝是有条件的,如果arr1的空间不够大那么还能拷贝吗?显然是不能的如果空间不足够却仍然进行拷贝那么编译器会报错。

2、strcat的使用

    它的基本形式如下

char * strcat ( char * destination, const char * source );

      它的参数类型同strcpy完全一致,这个函数的作用为追加字符串也就是从目标字符串的’\0‘开始使source中的字符或字符串追加到destination中,通strcpy一样它也是有条件的,目标字符串空间必须足够否则编译器会报错

	char arr1[20] = "dasa";
	char arr2[] = "aaaaa";
	strcat(arr1, arr2);
	std::cout << arr1 << std::endl;

这段代码的运行结果就为:

 

     前两个函数都要求目标函数的空间必须足够大,这一点是非常容易理解的。

3、strstr函数

const char * strstr ( const char * str1, const char * str2 );
      char * strstr (       char * str1, const char * str2 );

      这两种参数形式没有什么差别,它的如要作用为在str1中查找是否有str2字符串,也就是查找str1中是否有str2的一部分,如果有则返回str1中与str2中相同的字符串的第一个字符的地址,这里需要特别注意的是strstr函数真能返回从左往右第一个str1中和str2中的第一个字符的的值,如果str1中有多个str2那么值返回str1中第一个str2的首元素地址。

    下面我们来使用这个函数:

	char arr1[20] = "dqweqweq";
	char arr2[] = "we";
	char* ret = strstr(arr1, arr2);
	std::cout << ret << std::endl;

    这个程序的结果是:

 

 当然如果找不到那就返回空了。

    4、strncpy,strncat,strncmp观察这三个函数是不是同上面三个函数十分相似呢?没错这三个函数与上面三个函数只不过是多了一个参数而已:

char * strncpy ( char * destination, const char * source, size_t num );
char * strncat ( char * destination, const char * source, size_t num );
int strncmp ( const char * str1, const char * str2, size_t num );

      通过查看这三个函数的参数我们可以知道他们比前三个函数多了一个参数 size_t  num;下面我们来简要介绍他们的使用:

   strncpy:它的作用依旧是字符串的拷贝,但不同的是他可以指定拷贝几个字符串。

   strnact:它的作用依旧是查找字符串,但是与strstr不同的是他可以限定从destination中前num个字符中查看是否有source;

   strncmp:它的作用依旧是比价字符串的大小,但与strcmp不同的是它也是可以先限定前几个进行比较。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

熬到半夜敲代码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值