【发布时间】:2014-02-11 01:30:37
【问题描述】:
有一段时间没有用 C 编程了,所以我肯定在这里遗漏了一些东西,但我不知道它是什么。
我有两个字符串,如下图:
char toMatch[] = "--exit--";
char entry[1024];
通过这个程序,我有一个 while 循环,它接受用户输入来修改整个程序中的字符串 entry。当entry 等于toMatch 时,我想退出这个while 循环。
我认为使用 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 是相等的,而 0 是不相等的,对吧?除此之外,您是否打印出两个字符串的值 - 最好在它们之前和之后使用一个字符,例如'"',以使空格可见 - 以确认您确实在比较您认为的内容比较?
-
用户输入可能以换行符结尾。尝试将 tomatch 设置为“--exit--\n”。
标签: c