本篇博客将讲解以下知识:

(1)strcmp的使用和模拟实现

(2)strncpy的使用

1、strcmp的使用和模拟实现

注意:使用strcmp时要包含头文件:string.h,strcmp是用来比较两个字符串大小的

注意:两个字符串是不能直接用>,< =,>=,<=来进行比较。字符串比较时,比较的是内容。

例如:

(1)strcmp的使用

strcmp函数原型:

int  strcmp(  const  char* str1,  const  char *  str2);

str1对应于第一个字符串

str2对应于第二个字符串

strcmp函数在比较字符串的时候是对应位置上字符之间的比较。

strcmp返回值:

(1)第一个字符串大于第二个字符串,则返回一个大于0的数字; 

(2)第一个字符串等于第二个字符串,则返回0;

(3)第一个字符串小于第二个字符串,则返回一个小于0的数字;

两个字符串内部是怎么比较的,内部比较两个字符串对应位置上字符ASCII码值的大小。

vs2022中strcmp的返回值:

(1)返回值>0,则返回1;

(2)返回值==0,则返回0;

(3)返回值<0,则返回-1;

代码示例:

(2)strcmp的模拟实现

代码:

#define  _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<assert.h>
int my_strcmp(const char* str1, const char* str2)
{
    assert(str1 && str2 != NULL);
    while (*str1 == *str2)
    {
        if (*str1 == '\0')
        {
            return 0;
        }
        str1++;
        str2++;
    }
    if (*str1 > *str2)
    {
        return 1;
    }
    else
    {
        return -1;
    }
}
int main()
{
    char arr1[] = "abc";
    char arr2[] = "avc";
    int result = my_strcmp(arr1, arr2);
    printf("%d\n", result);
    return 0;
}

总结:

strcpy,   strcat  ,    strcmp   是长度不受限制的字符串函数(即:不会追加几个,拷贝几个,比较几个)

而strncpy,  strncat,  strncmp是长度受限制的字符串函数。

2、strncpy函数的使用

注意:使用strncpy函数时要包含头文件:string.h

strncpy原型:

char*   strncpy(char*  destination,  char*  source,size_t num);

(1)拷贝num个字符从源空间到目标空间中

(2)如果源字符串的长度小于num,则拷贝完字符串之后,紧挨着在目标空间的后边追加‘\0’,知道num个。

代码示例:

拷贝num个字符,就是拷贝num个字符,不会加‘\0’;

但是如果源字符串的长度小于num,则拷贝完字符串之后,紧挨着在目标空间的后边追加‘\0’,知道num个。

代码示例:

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部