如何比较2个字符数组

时间:2016-11-15 08:23:53

标签: c

如何比较这两个字符数组以确保它们完全相同?

char test[10] = "idrinkcoke"
char test2[10] = "idrinknote"

我正在考虑使用for loop,但我在其他地方读到了我在C中无法做test[i] == test2[i]

如果有人能帮助我,我真的很感激。谢谢。

2 个答案:

答案 0 :(得分:10)

  

但我在其他地方读到我无法在C中测试[i] == test2 [i]。

比较逐个字符真的很痛苦。由于您要在此处比较两个字符数组(字符串),因此应使用strcmp代替:

if( strcmp(test, test2) == 0)
{
    printf("equal");
}

编辑:

  • 初始化字符数组时无需指定大小。这会更好:

    char test[] = "idrinkcoke";
    char test2[] = "idrinknote";

  • 如果使用strncmp它也会更好 - 一般来说更安全(如果字符数组碰巧是非NULL终止的)。

    if(strncmp(test, test2, sizeof(test)) == 0)

答案 1 :(得分:2)

您可以使用C库函数strcmp

像这样:

if strcmp(test, test2) == 0

来自documentation on strcmp

  

将C字符串str1与C字符串str2进行比较。

     

此函数开始比较每个字符串的第一个字符。如果   它们彼此相等,它继续以下对   直到字符不同或直到终止空字符为止   达到。

     

此函数执行字符的二进制比较。为一个   考虑特定于语言环境的规则的函数,请参阅strcoll。

并返回值:

  如果两个字符串的内容相等,则

返回0