gpt4 book ai didi

使用 memcmp 比较两个字符串文字

转载 作者:太空狗 更新时间:2023-10-29 17:02:00 25 4
gpt4 key购买 nike

我已经使用 memcmp 函数比较了两个字符串文字。

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

int main()
{
char str1[] = "abcd";
char str2[] = "ab";

if (memcmp(str1, str2, 4) == 0)
{
printf("equal string\n");
}
return 0;
}

在上面的程序中,str2str1短。这意味着字符串 str2 被越界访问。

那么,这是未定义的行为吗?

最佳答案

您的代码的行为未定义。 C 标准不要求 memcmp 在知道结果后立即返回;也就是说,当 \0'c' 进行比较时,尽管 'c' 的值为 necessarily 必须返回== '\0' 对于语言支持的任何字符编码都是 0。该标准也没有指定进行字典顺序比较的顺序(尽管实现不是从头开始会很棘手)。

str2 是一个 char[3] 类型。可能会尝试访问第 4 个元素。

引用:http://en.cppreference.com/w/c/string/byte/memcmp

关于使用 memcmp 比较两个字符串文字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50129072/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com