在简单的C程序中遇到麻烦

时间:2011-11-18 12:48:39

标签: c scanf

我遇到一个简单的C程序问题。即使我输入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 个答案:

答案 0 :(得分:7)

您需要将地址传递给scanf,即:

scanf("%d", &year);

请注意&符号。

答案 1 :(得分:2)

在scanf中,其他参数应为指针
它应该是

  scanf("%d", &year);

答案 2 :(得分:1)

Adam Zalcman打败了我,使用它 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()构造,但我会把它作为练习留给你:)