【发布时间】:2018-10-04 17:21:48
【问题描述】:
在我的程序的这个迷你版本中,我要求用户输入。当输入为“退出”或“退出”时,我希望程序退出 while 循环。 strcmp 函数似乎没有像我预期的那样工作。我花了一些时间寻找答案,但找不到问题。有什么想法吗?
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#define BUFFER_SIZE 100
int main() {
char request[BUFFER_SIZE];
while(strcmp(request, "quit") != 0 && strcmp(request, exit) != 0) {
fgets(request, BUFFER_SIZE, stdin);
}
return 0;
}
【问题讨论】:
-
有一个尾随
\n。第一个循环也包含 UB。 -
请注意,
strcmp(request, exit)将exit()函数的函数指针与request进行比较——这不好。您的意思可能是strcmp(request, "exit")。注意编译器警告——并在提出关于 SO 的问题之前修复它们。或者如果您不理解警告,请询问。