1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Comparar Strings

Discussão em 'Programação' iniciada por perinhas, 2 de Janeiro de 2009. (Respostas: 4; Visualizações: 604)

  1. perinhas

    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 :(
     
  2. Aparicio

    Aparicio /dev/mod
    Staff Member

    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.
     
  3. perinhas

    perinhas What is folding?

    Feito...obrigado ;)
     
  4. napalm

    napalm Power Member

    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 ':'
     
  5. perinhas

    perinhas What is folding?

    Realmente assim tem mais lógica, e é muito mais fácil. Mais uma vez obrigado.
     

Partilhar esta Página