使用 return String1 - String2 == 0 进行相等检查是否安全?

匿名

我刚刚创建了这个函数来通过减去它们的整数值来检查两个字符串之间的相等性

int EQ(const char* CString1, const char* CString2)
{
    return CString1 - CString2 == 0;
}

但是,我不确定这是否是检查char*字符串的安全方法

它不适用于数组,因为它们有不同的整数,所以我为此创建了其他函数

int EQA(const char* CString1, const char* CString2){
    if(CString1 == NULL || CString2 == NULL)
        return 0;
    int i = strlen(CString1);
    if(i != strlen(CString2))
        return 0;
    while(i>=0){
        if(CString1[i] != CString2[i])
            return 0;
        --i;
    }
    return 1;
}

我没有尝试过多优化我的第二个功能

但是在检查时char*,我为什么要使用EQA()strcmp()结束EQ()

第一个EQ()是非常,比我以前使用的任何其他标准功能
所以,我真的很喜欢使用它

我在其他机器上对其进行了测试,它可以工作,但是 Integers 值char* 不同,还
注意到这些整数取决于代码中首先声明的变量,但是如果它们具有相同的字符串,它是相同的整数,这使得该函数完美运行,所以它不依赖编译器

为什么不同的整数?,它仍然安全吗?

编辑:一些答案侧重于调试我的第二个示例而不是回答我的问题,所以我编辑了它。

黑客

两个字符串在字典上相等并不意味着它们存储在相同的内存位置。减去它们的地址来比较它们可能会给出一些错误的结果。如果两个指针不指向同一数组的元素或指向数组最后一个元素之后的元素,则指针减法是没有意义的。
我建议使用标准函数strcmp进行字典字符串比较。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用递归(python)检查string1是否与string2相反

来自分类Dev

如何检查string2是否有string1中没有的字符?

来自分类Dev

“ string1” +(<条件>)?“ string2”:“ string3”

来自分类Dev

Excel公式-如果为'string1'或'string2',则

来自分类Dev

Excel公式-如果为'string1'或'string2',则

来自分类Dev

限制检查另一列(2)中的值的column(1)等于'String1'和'String2',并将column(1)设置为不为null

来自分类Dev

如何创建一种方法来检查string1是否可以重新排列为等于string2?

来自分类Dev

在JAVA API中,为什么使用'=='而不是String.equals()方法进行相等性检查

来自分类Dev

使用PHP,当我只知道“ aaa”时,如何从“ string1 string2 aaa-bbb string3”中获取子字符串“ aaa-bbb”?

来自分类Dev

jquery目标文本节点,以(string1)开头并以(string2)结尾

来自分类Dev

Python-查找在string1和string2中都找到的字符数

来自分类Dev

grep命令,用于带有“ String1”而不是“ String2”的文件

来自分类Dev

string1 == string2和您自己的for循环比较之间有什么区别?

来自分类Dev

如何找到最大的子字符串从string1到string2

来自分类Dev

ansible regex替换所有匹配的string1,排除string2

来自分类Dev

vim regex搜索包含string1和string2的行

来自分类Dev

Grep:以string1开头,以string2的第一次出现结束

来自分类Dev

如何查找/ grep string1和string2之间是什么?

来自分类Dev

jquery目标文本节点,以(string1)开头并以(string2)结尾

来自分类Dev

如何grep“STRING1”但如果该行包含“STRING2”则跳过?

来自分类Dev

Javascript - 获取“string1”之后和“string2”之前的子字符串

来自分类Dev

Python 正则表达式匹配模式“X<string1>:X<string2>”

来自分类Dev

Excel VBA-如果单元格包含string1或string2或string3等,则删除整行

来自分类Dev

如果Java没有运算符重载,“ string1” +“ string2”怎么可能?

来自分类Dev

在文件(即多行模式)中,将string1的前n个出现位置替换为string3之后的string2

来自分类Dev

map <string1,map <string2,map <string3,string>>>比将字符串连接到map <string1string2string3,string>慢吗?

来自分类Dev

如果在特定情况下未返回整数,是否可以在函数中使用return 1,return 2或任何其他整数而不是return 0?

来自分类Dev

返回同一文件中最后一个匹配String2之后的文件中与String1匹配的所有行

来自分类Dev

文本文件:如何获取string1和string2的下一个实例之间的文本并将其设置为Batch变量?

Related 相关文章

  1. 1

    如何使用递归(python)检查string1是否与string2相反

  2. 2

    如何检查string2是否有string1中没有的字符?

  3. 3

    “ string1” +(<条件>)?“ string2”:“ string3”

  4. 4

    Excel公式-如果为'string1'或'string2',则

  5. 5

    Excel公式-如果为'string1'或'string2',则

  6. 6

    限制检查另一列(2)中的值的column(1)等于'String1'和'String2',并将column(1)设置为不为null

  7. 7

    如何创建一种方法来检查string1是否可以重新排列为等于string2?

  8. 8

    在JAVA API中,为什么使用'=='而不是String.equals()方法进行相等性检查

  9. 9

    使用PHP,当我只知道“ aaa”时,如何从“ string1 string2 aaa-bbb string3”中获取子字符串“ aaa-bbb”?

  10. 10

    jquery目标文本节点,以(string1)开头并以(string2)结尾

  11. 11

    Python-查找在string1和string2中都找到的字符数

  12. 12

    grep命令,用于带有“ String1”而不是“ String2”的文件

  13. 13

    string1 == string2和您自己的for循环比较之间有什么区别?

  14. 14

    如何找到最大的子字符串从string1到string2

  15. 15

    ansible regex替换所有匹配的string1,排除string2

  16. 16

    vim regex搜索包含string1和string2的行

  17. 17

    Grep:以string1开头,以string2的第一次出现结束

  18. 18

    如何查找/ grep string1和string2之间是什么?

  19. 19

    jquery目标文本节点,以(string1)开头并以(string2)结尾

  20. 20

    如何grep“STRING1”但如果该行包含“STRING2”则跳过?

  21. 21

    Javascript - 获取“string1”之后和“string2”之前的子字符串

  22. 22

    Python 正则表达式匹配模式“X<string1>:X<string2>”

  23. 23

    Excel VBA-如果单元格包含string1或string2或string3等,则删除整行

  24. 24

    如果Java没有运算符重载,“ string1” +“ string2”怎么可能?

  25. 25

    在文件(即多行模式)中,将string1的前n个出现位置替换为string3之后的string2

  26. 26

    map <string1,map <string2,map <string3,string>>>比将字符串连接到map <string1string2string3,string>慢吗?

  27. 27

    如果在特定情况下未返回整数,是否可以在函数中使用return 1,return 2或任何其他整数而不是return 0?

  28. 28

    返回同一文件中最后一个匹配String2之后的文件中与String1匹配的所有行

  29. 29

    文本文件:如何获取string1和string2的下一个实例之间的文本并将其设置为Batch变量?

热门标签

归档