strcmp、strcpy、strcat的使用

来源:互联网 发布:闻道软件 编辑:程序博客网 时间:2024/06/15 14:03

博客内容来源:网络、书籍和自己整理补充

int strcmp(const char *string1, const char *string2);

功能:比较字符串string1和string2大小

返回值<0,string1 < string2;

返回值=0,string1 = string2;

返回值>0,string1 > string2;

 

char *strcpy(char *strDestination, const char*strSource);

功能:复制源串strSource到目标串strDestination,包含NULL结束符,不处理源串和目标串重叠情况,返回strDestination值

和memcpy的区别:(void *memcpy(void *dest, const void *src, size_t count));

1、复制内容不同。strcpy只复制字符串,而memcpy可以复制任何类型的内容,比如字符数组、整型、结构体、类等

2、复制方法不同。strcpy不需要指定长度,遇到'\0'自动结束,所以容易溢出,而memcpy则根据第3个参数决定复制的长度

3、用途不同。复制字符串用strcpy,复制其他类型数据用memcpy


如果源串长度大于目标串长度,会出现什么情况?

#include <stdio.h>
#include <malloc.h>
#include <string.h>


int main()
{
    char src[8] = "abcdefg";//包括'\0'
    char *dest = (char *)malloc(sizeof(char) * 2);

 

    printf("dest = %s\n",strcpy(dest, src));
    return 0;
}

输出结果:

傻眼了,结果竟然正确的被输出了,而且还没有错误提示。。。(编译器:codeblocks)

但是讲道理会有bufferOverFlow风险,会破坏内存,不同的编译器的编译结果不一样。

 

char *strcat(char *strDestination, const char*strSource);

功能:将源串strSource的字符添加到strDestination后面,并在得到的新串后面加上NULL结束符

希望能对大家有帮助!谢谢阅读!

0 0
原创粉丝点击