bruce845 Posted October 15, 2011 Report Share Posted October 15, 2011 (edited) Bem, fiz esse programa em C que lê uma data.#include <stdio.h> #include <conio.h> #include <string.h> void main(void) { short int dia,mes,ano; puts("Digite a data:"); scanf("%hd%*c%hd%*c%hd",&dia,&mes,&ano); printf("%hd/%hd/%hd\n",dia,mes,ano); getch(); return; }Só que se o usuário digitar outra coisa (ex.: kdasdas)Como validar a data nesse caso? Edited October 15, 2011 by bruce845 Quote Link to comment Share on other sites More sharing options...
0 Durub Posted October 15, 2011 Report Share Posted October 15, 2011 Eu já tomaria uma abordagem diferente:#include <stdio.h> /* int ler_data(int* dia, int* mes, int* ano); Le uma data nas variaveis dia, mes, ano Se a função retornar 0, os valores dia, mes, ano são numéricos e estão com os valores inseridos pelo usuário Se a função retornar 1, ocorreu um erro de leitura e as variáveis dia, mes, ano podem conter lixo! */ int ler_data(int* dia, int* mes, int* ano) { char input[1024]; int valida; fgets(input, 1024, stdin); valida = sscanf(input, "%d/%d/%d\n", dia, mes, ano); return (valida == 3) ? 0 : 1; } /* int valida_data(int dia, int mes, int ano); Valida os valores dia, mes e ano Se a função retornar 0, todos os valores foram validados Se a função retornar 1, ocorreu um problema de validação com o dia (isso não garante que o mês e o ano estejam corretos!) Se a função retornar 2, ocorreu um problema de validação com o mês (isso não garante que o ano esteja correto!) Se a função retornar 3, ocorreu um problema de validação com o ano */ int validar_data(int dia, int mes, int ano) { if(dia > 31 || dia < 1) { return 1; } if(mes > 12 || mes < 1) { return 2; } if(ano < 1) { return 3; } return 0; } int main(void) { int dia, mes, ano; while(ler_data(&dia, &mes, &ano) || validar_data(dia, mes, ano)); printf("%d/%d/%d\n", dia, mes, ano); return 0; }Ele irá ficar pedindo uma data até o usuário inserir uma correta. (1-31/1-12/1-infinito)Abraços! Quote Link to comment Share on other sites More sharing options...
Question
bruce845
Bem, fiz esse programa em C que lê uma data.
Só que se o usuário digitar outra coisa (ex.: kdasdas)
Como validar a data nesse caso?
Edited by bruce845Link to comment
Share on other sites
1 answer to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.