2014-11-21 23 views
0

我有这个小程序:请与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(或任何其他为此事),没有任何反应。 我错过了什么?

+0

使用'strcmp'比较字符串。 – 2014-11-21 07:33:57

+0

您不能使用'=='来比较C中的字符串 - 而是使用strcmp。 – 2014-11-21 07:34:04

回答

-1

while (buffer == "0")

这里,我想,你是期待

while(strcmp(buffer,"0")==0) .//您可以更改条件

1

变化

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 
} 
0

其他人已经告诉你,你无法将字符串与==进行比较。在你的情况下,如果你想写一个菜单,你可以先将缓冲区转换为数字,然后用sscanfatoi

这里有一个简单的实现这样一个菜单:

#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; 
} 
相关问题