2016-01-25 117 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

哈哈!我其實有一個......我將不得不使用它。再次感謝您的歡笑! (: –