2015-02-11 118 views
0

我有一个程序,它从char数组获取输入,使用strtok函数检查输入是否包含单词“up”或“down”。如果它包含单词“up”,则我的b值设置为false(即b = 0),并且我的c值也设置为false。如果char数组包含单词“down”,则b设置为false,但是我的c值设置为true(即c = 1)。两个If语句一次执行,而不是一个

当第一个if语句执行时,字符串中包含单词“up”,并在屏幕上打印结果字符时出现问题,但第二个如果还执行打印这些字符。任何输入在这个问题将不胜感激

编辑:同样的问题发生,如果我使用单词“向下”,这两个如果语句执行。

int moveC(int y, int x, int b, int i, int c) { 
    // int c is a static variable(static int c = FALSE;) defined in the previous function 
    int j; 
    int k; 

switch (b) //assume b is always false (which it is) 
{ 
    case FALSE: 
     if (c == 0) { 
      mvprintw(y, x, "^"); 
      refresh(); 

      for (j = 1; j <= i; j++) { 
       mvprintw(y + j, x, "."); 
       refresh(); 
      } 
      break; 
     } 

     if (c == 1) //tried using else if, same result 
     { 

      mvprintw(y, x, "^"); 
      refresh(); 

      for (j = 1; j <= i; j++) { 
       mvprintw(y - j, x, "."); 
       refresh(); 
      } 
      break; 
     } 
} 
return 0; 
} 
+0

您是否尝试过使用逐步调试器?你观察到了什么? – Dai 2015-02-11 03:44:34

+0

不完全确定这是否可能(因为我正在编写我的树莓PI)。原谅我的无知,但我不熟悉所谓的“阶梯式调试器”。 – user20842454566 2015-02-11 03:47:19

+0

@ user20842454566尝试学习使用gdb,作为C程序员的生活将变得如此简单。 – Snaipe 2015-02-11 08:03:55

回答

1

您的代码很可能会执行两次。赠品是你尝试了一个if/else。在一个if语句的执行过程中,只有一个块会被执行有史以来的

+0

根据你的回答,我仍然不明白如何解决我目前的问题,关心扩展? – user20842454566 2015-02-11 03:49:02

+0

在if/else语句中,代码编译为代码,其中它是_impossible_(为了我们的参数)执行该语句的多个部分。我不知道你的程序是做什么的,但它可能是你看到的一个时间条件,你的代码执行速度比你预期的要快,并且在你看到那个输出之前已经经过了多段代码。也许在声明之后停顿一下,这样你可以看到输出会有所帮助。 – BoldAsLove 2015-02-11 03:54:03

+0

假设你可以看到输出,在函数的顶部在任何条件代码之外添加一条print语句,你可以看到它被调用的次数以及每次调用中发生的任何输出。 – 2015-02-11 04:16:54