Возникли проблемы в простой программе C - PullRequest
3 голосов
/ 18 ноября 2011

У меня проблема с простой программой на Си. Даже если я введу год между 1000 и 1999, он все равно будет показывать недействительный год. Пожалуйста, скажите мне, что происходит ??

#include <stdio.h>

main()
{
    int year;
c:
    printf("\n\nEnter a Year: ");
    scanf("%d", year);

    if ((year < 1000) || (year > 1999))
    {
        printf("\n\nInvalid Year");
        goto c;
    }
    convert(year);

}
convert(int year)
{
    printf("%d", year);
}

Ответы [ 3 ]

7 голосов
/ 18 ноября 2011

Вам необходимо передать адрес scanf, то есть:

scanf("%d", &year);

Обратите внимание на амперсанд.

2 голосов
/ 18 ноября 2011

в scanf, остальные параметры должны быть указателями
это должно быть

  scanf("%d", &year);
1 голос
/ 18 ноября 2011

Адам Зальцман победил меня, используй scanf("%d", &year) и старайтесь избегать операторов goto. Замените его на цикл while следующим образом:

main() {
  int year;
  printf("\n\nEnter a Year: ");
  scanf("%d", &year);

  while((year < 1000) || (year > 1999)) {
    printf("\n\nInvalid Year");
    printf("\n\nEnter a Year: ");
    scanf("%d", &year);
  }
}

еще лучшей конструкцией было бы использование конструкции do {} while (), но я оставлю это вам в качестве упражнения:)

...