Leia uma cadeia de caracteres no formato “DD/MM/AAAA” e copie o dia, mês e ano para 3 variáveis inteiras. Antes disso, verifique se as barras estão no lugar certo, e se DD, MM e AAAA são numéricos.

Passo 1

O enunciado pede para ler uma string no formato “DD/MM/AAAA”, verificar se as barras estão nas posições certas e se todos os outros caracteres são dígitos, e então copiar dia, mês e ano para variáveis inteiras. O conteúdo envolvido é manipulação de strings em C, uso de funções como isdigit() e conversão de caracteres para valores numéricos.

Passo 2

Ler a data como uma string de até 10 caracteres usando scanf("%10s"), armazenando em um vetor char de tamanho 11 (10 caracteres + ‘\0’).
Verificar se data[2] e data[5] são ‘/’, garantindo que as barras estejam nos lugares certos. Se não estiverem, sinalizar erro de formato.
Percorrer os demais índices (0,1,3,4,6,7,8,9) e usar isdigit() para checar se cada caractere é numérico. Se algum não for, sinalizar erro de formato.

Passo 3

Converter as partes para inteiros: para o dia usar (data[0]-‘0’)*10 + (data[1]-‘0’), para o mês (data[3]-‘0’)*10 + (data[4]-‘0’) e para o ano combinar os quatro dígitos de modo análogo.
Se tudo estiver certo, teremos as variáveis inteiras dia, mes e ano com os valores desejados e podemos usá-las ou imprimir para conferência.

Resposta

#include <stdio.h>
#include <ctype.h>
int main() {
char data[11]; // 10 caracteres + \0
int dia, mes, ano;
printf("Digite a data (DD/MM/AAAA): ");
scanf("%10s", data);

// Verifica se as barras estão nos índices certos
if (data[2] != '/' || data[5] != '/') {
    printf("Formato inválido: barras fora de lugar.\n");
    return 1;
}

// Verifica se todos os outros caracteres são dígitos
for (int i = 0; i < 10; i++) {
    if (i == 2 || i == 5) continue;
    if (!isdigit((unsigned char)data[i])) {
        printf("Formato inválido: caracteres não numéricos encontrados.\n");
        return 1;
    }
}

// Converte cada parte para inteiro
dia = (data[0] - '0') * 10 + (data[1] - '0');
mes = (data[3] - '0') * 10 + (data[4] - '0');
ano = (data[6] - '0') * 1000
    + (data[7] - '0') * 100
    + (data[8] - '0') * 10
    + (data[9] - '0');

// Exibe para conferência
printf("Dia: %d, Mês: %d, Ano: %d\n", dia, mes, ano);
return 0;
}

Exercícios relacionados