2017-06-22 113 views
0
之间

所以,我是新来的C和我有2个问题与此代码:While循环跳过的getchar和比较指针和整数

#import <stdio.h> 

int main(){ 
    char answer; 
    int playerX = 0; 
    int playerY = 0; 
    int done = 0; 
    char direction[] = "none"; 

    while (done == 0){ 
     printf("Direction:\n"); 
     a = getchar(); 

     if (answer == "u"){ 
      playerY += 1; 
     } else{ 

     } 
     printf("Your current position is: %d,%d\n", playerX, playerY); 
    } 

    return 0; 
} 
  1. 第14行它说:“警告:指针之间的比较和整数”
  2. 由于只有1个输入(即U),并没有别的我看到这一点:

方向:
ü
你当前的位置是:0,0
方向:
您当前的位置是:0,0
方向:

+0

'“u”'是字符串文字。 ''u''是一个字符常量。 –

+1

您也输入了换行符。 – BLUEPIXY

+1

'a = getchar()'。也许你的意思是:'answer = getchar()'? –

回答

1

首先,我假设你有“#包括”而不是“进口”在第1行和“答案”,而不是第12行中的“a”。

要回答你的实际问题,在C字符和字符串是不同的。你有一个char类型的变量答案,你正在比较字符串“u”。因此,编译器正在创建一个常量字符串“u”,并将指向该字符串的指针与char类型的变量answer进行比较。您的支票应该改为

if(answer == 'u') {