2016-01-25 3 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 только для целей тестирования и не хочу, чтобы он печатался при выполнении моей программы.

Если я удалю for(n = 0; n < count; n++) и 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

Ха-ха! У меня есть на самом деле ... мне придется использовать его. Еще раз спасибо и за смех! (: –

Смежные вопросы