测试字符串相等问题

时间:2014-02-11 01:30:38

标签: c

有一段时间没有在C中编程,所以我肯定在这里遗漏了一些东西,但我无法弄清楚它是什么。

我有两个字符串,如下所示:

char toMatch[] = "--exit--";
char entry[1024];

通过这个程序,我有一个while循环接受用户输入来修改整个程序中的字符串entry。我希望在entry等于toMatch时退出此循环。

我认为使用strcmp函数很容易,但由于某些原因它无法正常工作。最初我有这个:

while(strcmp(entry, toMatch) != 0) {
    // accept user input here to modify entry
}

然而,这不起作用。所以我在再次接受用户输入之前添加了一行代码来清除entry的内容:

while(strcmp(entry, toMatch) != 0) {
    memset(entry, 0, sizeof(entry));
    // accept user input here to modify entry
}

这也不起作用。我需要entry这么长,因为用户的条目可以是小于此的任何长度。我不知道为什么strcmp()不起作用,所以我想我错过了一些显而易见的事情。

1 个答案:

答案 0 :(得分:5)

如果您始终使用零明确地编写比较,则使用strcmp()非常简单:

  • strcmp(a, b) == 0求平等
  • strcmp(a, b) != 0 for notquality
  • {li> strcmp(a, b) >= 0 a等于或等于b 的排序 {li> strcmp(a, b) > 0 ab排序 {li> strcmp(a, b) <= 0 a等于或等于b 之前的排序 在strcmp(a, b) < 0 之前对a排序的
  • b

如果您在输入中遇到"--exit--"匹配时出现问题,您是否删除了前导空格,尾随空格,尾随换行符(尤其是后者,如果您使用fgets()读取输入)。这表明了什么:

printf("[[%s]]\n", entry);

方括号显示程序认为字符串末尾的位置。