( C ) - Programa (na descrição) está repetindo o do-while mesmo o while estando errado!

O código:

#include <stdio.h>
#include <stdlib.h>
int main() {
    int dia;
    int mes;
    int ano;

    do { // ano
        printf("Ano: ");
        scanf("%i", ano);
    } while (ano < 1900 || ano > 2100);

    do { // mes
       printf("\nMes: ");
       scanf("%i", mes);
    } while (mes < 1 || mes > 12);

    do { // dia
       printf("\nDia: ");
       scanf("%i", dia);
    } while (dia < 1 || dia > 31);
    
    system("pause");
    return(0);
}

Mesmo eu colocando os valores entre 1900 e 2100, ele continua repetindo o do do // ano!
Onde estou errando?

Ao atribuir valor para uma uma váriavel primitiva, é necessário deferenciar a mesma (&). No seu caso:

De:

scanf("%i", ano);  

Para:

scanf("%i", &ano);  

[]'s

[quote=LeonardoU]Ao atribuir valor para uma uma váriavel primitiva, é necessário deferenciar a mesma (&). No seu caso:

De:

scanf("%i", ano);  

Para:

scanf("%i", &ano);  

[]'s[/quote]

toda vez esqço disso… vlw!