Funzione controllo_data

di il
2 risposte

Funzione controllo_data

Ho creato una funzione che mi controlla la data e restuisce 0 se la data è errata, 1 se la data è corretta.

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
funzione

int controllo_data (char * mese, char * giorno)
{
    int x=0;
    if (strcmp(mese, "gennaio") || strcmp(mese, "marzo") || strcmp(mese, "maggio") || strcmp(mese, "luglio") || strcmp(mese, "agosto") || strcmp(mese, "ottobre") || strcmp(mese, "dicembre")) {
        if (atoi(giorno)<=31 && atoi(giorno)>=1)
            x=1;
    } else if (strcmp(mese, "aprile") || strcmp(mese, "giugno") || strcmp(mese, "settembre") || strcmp(mese, "novembre")) {
        if (atoi(giorno)<=30 && atoi(giorno)>=1)
            x=1;
    } else if (strcmp(mese, "febbraio")) {
        if (atoi(giorno)<=28 && atoi(giorno)>=1)
            x=1;
    }
    return x;
}
main

int main(int argc, const char * argv[])
{
    char mese[20], giorno[2];
    puts("Mese: ");
    scanf("%s", mese);
    puts("Giorno: ");
    scanf("%s", giorno);
    int x = controllo_data(mese, giorno);
    printf("%d", x);
    return 0;
}
Fatto sta che se il mese è febbraio e il giorno è 30 mi dovrebbe restituire 0, invece mi restituisce 1.
Come mai? Grazie

2 Risposte

  • Re: Funzione controllo_data

    La strcmp non si usa in quel modo. Se vuoi vedere se due stringhe sono uguali devi scrivere
    
    if(strcmp(s1, s2) == 0)
    
    Ho provato e in questo modo funziona.

    Cosa ne dobbiamo dedurre? Che non hai letto la documentazione della strcmp!
  • Re: Funzione controllo_data

    Giusto hai ragione, ho letto la documentazione di questa funzione, ma mi sono dimenticato di completare come si deve
Devi accedere o registrarti per scrivere nel forum
2 risposte