Comparar Strings

perinhas

What is folding?
Código:
#include <stdio.h>
#include <string.h>

char string_modelo[12] = "0123456789:";
char tempo[10];
int main (void)
{
    printf("Introduza o tempo [H:mm:ss:dd]: ");
    fflush(stdin);
    gets(tempo);
    if (tempo[10] != string_modelo[12]) // Sei que isto está mal, mas é so um exemplo do que queria fazer.
    printf("Invalido");
    else
    printf("Tempo: %s", tempo);
    getchar();
    return 0;
}

Alguém me consegue arranjar uma maneira de certa maneira validar a string "tempo" com a string_modelo. Ou seja, só se podia introduzir na string tempo os caracteres da string_modelo, caso o utilizador introduzi-se um diferente daria erro. Já tive a ver todas as funções do string.h, mas não encontro nenhuma sequer que me ajude :(
 
Faz um ciclo que percorre todos os caracteres da string tempo e utilizado o strpbrk do string.h verifica se cada carácter existe na string modelo.
 
Código:
#include <stdio.h>
#include <string.h>

char tempo[11]; // espaço para o \0
int main (void)
{
    printf("Introduza o tempo [H:mm:ss:dd]: ");
    fflush(stdin);
    fgets(tempo, 11, stdin);
    char *c = tempo;
    while(*c != '\0') {
        if((*c < '0' || *c > '9') && *c != ':') {
            printf("Invalido: %c\n", *c);
            return 1;
        }
        c++;
    }
    printf("Tempo: %s\n", tempo);
    return 0;
}
Nunca uses o gets. Mais simples do que estar a fazer 2 ciclos, é apenas verificar se o caracter está no intervalo entre '0' e '9' ou se é igual a ':'
 
Back
Topo