2013-09-05 3 views
2

Я пытался выяснить, что не так с моим кодом почти в течение нескольких часов, но я не могу найти его. Мой код компилировался, что говорит о том, что ошибок, нарушающих компилятор, нет, но моя программа не работает так, как я ее хочу.C: Неисправность программы Fixing

Мой код:

#include <stdio.h> 
#define MAXNUM 3 
#define MAXLEN 9 

int main() 
{ 
     char input[MAXNUM][MAXLEN]; 
     int count; 
     int a = 0; 
    for (count = 0; (count + 1) < MAXNUM; count++) { 
    printf ("Enter number: (12XXXXXXX): "); 
     if ((fgets (input[count], sizeof(input), stdin)) != 0) { 
      a = atoi (input[count]); 
      if (((a/10000000) >= 13) || ((a/10000000) <= 11)) { 
      //error message 
      } 
     } else { 
      //error message 
     } 
    } 
    return 0; 

}

Программа должна была принимать три входа, но это занимает четыре, а затем завершает фатально. Его другие функции работают правильно (что касается неправильных входов и т. Д.), Единственными проблемами, по-видимому, являются количество запросов, которые он должен запрашивать у пользователя. Я предположил, что ошибка в моем состоянии цикла, и я пытался понять это, но безрезультатно. Может ли кто-нибудь указать на это?

* OKAY Я ИЗОБРАЖАЛ. Он находится в состоянии цикла: *(count + 1) <= MAXNUM

+0

Все [ваши вопросы] (http://stackoverflow.com/users/2156510/sakamoto?tab=questions) выглядят странно похожими ... –

+0

Я знаю, я работаю над программой для практики. – Sakamoto

ответ

0

Цикл for() итерации 1 часто. Таким образом, вместо

for (count = 0; (count + 1) < MAXNUM; count++) { 

Заменить

for (count = 0; count < MAXNUM; count++) { 

Я заметил, что OP редактировал вопрос с собственным решением:

(count + 1) <= MAXNUM; 

Это почти эквивалентно. Он отличается на некоторых компиляторах при обработке count + 1, если он переполняется. Рекомендовать идиоматическое решение count < MAXNUM.