我有这个小程序:请与fgets字符保存到一个变量用C
char buffer[10] = "0"
while (buffer == "0"){
fgets(buffer, sizeof(buffer), stdin);
if(buffer == "1\n") do this
if(buffer == "2\n") do that
}
然而,当我按1或2(或任何其他为此事),没有任何反应。 我错过了什么?
我有这个小程序:请与fgets字符保存到一个变量用C
char buffer[10] = "0"
while (buffer == "0"){
fgets(buffer, sizeof(buffer), stdin);
if(buffer == "1\n") do this
if(buffer == "2\n") do that
}
然而,当我按1或2(或任何其他为此事),没有任何反应。 我错过了什么?
while (buffer == "0")
这里,我想,你是期待
while(strcmp(buffer,"0")==0)
.//您可以更改条件
变化
char buffer[10] = "0"
while (fgets(buffer, sizeof(buffer), stdin){
if(strcmp(buffer, "1\n")==0)
;//do this
if(strcmp(buffer, "2\n")==0)
;//do that
}
其他人已经告诉你,你无法将字符串与==
进行比较。在你的情况下,如果你想写一个菜单,你可以先将缓冲区转换为数字,然后用sscanf
或atoi
。
这里有一个简单的实现这样一个菜单:
#include <stdlib.h>
#include <stdio.h>
int main()
{
char buffer[10];
int done = 0;
while (!done) {
int option = 0;
puts("1. Do this");
puts("2. Do that");
puts("3. Quit\n");
if (fgets(buffer, sizeof(buffer), stdin) == NULL) break;
if (sscanf(buffer, "%d", &option) < 1) option = 0;
switch (option) {
case 1:
puts("Done this.\n");
break;
case 2:
puts("Done that.\n");
break;
case 3:
done = 1;
break;
default:
puts("Please enter one of 1, 2, 3\n");
}
}
puts("Bye!");
return 0;
}
使用'strcmp'比较字符串。 – 2014-11-21 07:33:57
您不能使用'=='来比较C中的字符串 - 而是使用strcmp。 – 2014-11-21 07:34:04