有一段时间没有在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()
不起作用,所以我想我错过了一些显而易见的事情。
答案 0 :(得分:5)
如果您始终使用零明确地编写比较,则使用strcmp()
非常简单:
strcmp(a, b) == 0
求平等strcmp(a, b) != 0
for notquality strcmp(a, b) >= 0
a
等于或等于b
的排序
{li> strcmp(a, b) > 0
a
后b
排序
{li> strcmp(a, b) <= 0
a
等于或等于b
之前的排序
在strcmp(a, b) < 0
之前对a
排序的b
如果您在输入中遇到"--exit--"
匹配时出现问题,您是否删除了前导空格,尾随空格,尾随换行符(尤其是后者,如果您使用fgets()
读取输入)。这表明了什么:
printf("[[%s]]\n", entry);
方括号显示程序认为字符串末尾的位置。