2016-01-25 75 views
0

我打印四个变量在我的程序结束。打印变量绑定到另一个打印

int n = 0; 
    for (n = 0; n < count; n++) 
     printf("sorted array:%d\n ", array[n]); 

     int last = array[0]; 
     int unique = 1; 
     int i; 
     for (i = 1; i < n; i++) { 
      if (array[i] != last) { 
       last = array[i]; 
       unique++; 
      } 
     } 

     char *start; 
     int c; 
     int value; 
     int step; 

     c = 0; 
     start = line; 
     while (sscanf(start, "%d%n", array + c, &step) == 1) { 
      start += step; 
      c += 1; 
     } 

     value = 1; 
     int j; 
     for (j = 1; j < c; ++j) { 
      value += (array[j] - array[j - 1]) ? 1 : 0; 
     } 

     printf("integers: %d ", count); 

    } 

    /* Close the file */ 
    fclose(fp); 
    return 0; 
} 

,我可以打印变量unique的正确值的唯一方法是,如果我保持printf("sorted array:%d\n", array[n]);。但是,我仅使用printf语句仅用于测试目的,并不希望在执行程序时进行打印。

如果我删除​​和printf("sorted array:%d\n", array[n]);,则unique的值始终为不正确的值。

我从来没有见过这样的事情。关于为什么一个变量的printf似乎与另一个变量绑定的任何建议?

回答

5

如果你保留你的for循环,那么在它的最后,我们有n = count。如果你删除它,你有n = 0。然后这将更改您的第二个for循环,因为i不会采用相同的值。

+0

哇..谢谢。我很感激。我觉得有点愚蠢。 (:再次感谢您,我会在时间到的时候接受您的回答 –

+1

愚蠢的错误通常很难自己发现,但对其他人来说却很容易。[获取橡皮鸭](https://en.wikipedia.org/wiki/Rubber_duck_debugging),他可以为你节省一些宝贵的时间:-) – Magix

+1

哈哈!我其实有一个......我将不得不使用它。再次感谢您的欢笑! (: –