Leggere solo una riga da un file in c

di il
56 risposte

56 Risposte - Pagina 4

  • Re: Leggere solo una riga da un file in c

    Grazie mille, comunque quando chiedo all'utente di inserire il giorno di nascita, ho specificato il formato: (gg). Quindi non può inserire un numero da 1 a 9 ma deve inserire un numero da 01 a 31. Infatti ho scritto gg.
  • Re: Leggere solo una riga da un file in c

    Fabio97 ha scritto:


    quando chiedo all'utente di inserire il giorno di nascita, ho specificato il formato: (gg). Quindi non può inserire un numero da 1 a 9 ma deve inserire un numero da 01 a 31. Infatti ho scritto gg.
    Purtroppo questo non significa niente: l'utente può sbagliarsi, oppure può non capire cosa intendi, oppure può volontariamente ignorare le tue istruzioni. Devi fare qualcosa (nel codice) in modo che l'utente non possa inserire 1, 2, 3, ..., 9 neanche volendo, oppure in modo che un input errato da parte dell'utente venga corretto (quando possibile) automaticamente.
  • Re: Leggere solo una riga da un file in c

    Lo farò.
    Inoltre l'istruzione:
    
    codice[16]='\0';
    
    da un warning: Array index 16 is past the end of the array (which contains 16 elements). Come ovviare a ciò?
  • Re: Leggere solo una riga da un file in c

    Direi che il messaggio ti dice tutto: avrai dichiarato un array a 16 posti, quindi con [16], ma cerchi di scrivere nella posizione numero 16. Invece le posizioni sono numerate da 0 a 15.

    Quale sarà la soluzione? Prova a pensarci!
  • Re: Leggere solo una riga da un file in c

    Dichiarare un array[17]?
  • Re: Leggere solo una riga da un file in c

    Fabio97 ha scritto:


    Lo farò.
    Inoltre l'istruzione:
    
    codice[16]='\0';
    
    da un warning: Array index 16 is past the end of the array (which contains 16 elements). Come ovviare a ciò?
    Fabio ho impiegato un po' di tempo per cercare di trovarti l'errore nel codice, ho commesso un errore e, che onestamente il mio compilatore non ha rilevto warning, accorciando quella stringa che era dichiarata da 1024. Adesso per questo chiedo umilmente scusa.
    In più ho perso un po' di tempo nel scriverti un messaggio ricco di contenuti per chi vuole leggerli, preziosi per chi vuole imparare, ma stai dimostrando ancora una volta di non aver compreso bene.

    Perciò d'ora in poi io mi taccio, almeno finchè non dimostri che vuoi imparare.

    P.s. Comunque tutti quelli che in informatica si chiamano "magic number" devono sparire nella versione riveduta e corretta.
  • Re: Leggere solo una riga da un file in c

    Fabio97 ha scritto:


    dichiarare un array[17]?
    Esatto! Vedi che se vuoi ce la fai?
  • Re: Leggere solo una riga da un file in c

    Io invece credo di avere ascoltato o meglio letto ciò che hai scritto. Poi fai come vuoi
  • Re: Leggere solo una riga da un file in c

    minomic ha scritto:


    Fabio97 ha scritto:


    dichiarare un array[17]?
    Esatto! Vedi che se vuoi ce la fai?
    Se dichiaro array[17] mi sbaglia l'ultimo carattero. Anzichè dare in output F**FBA97******9Q, mi stampa: F**FBA97******9A
  • Re: Leggere solo una riga da un file in c

    Inoltre ho incluso nella codice una funzione che mi elimina gli spazi nei cognomi e nei nomi. Quindi se l'utente si chiama maria luisa, la funzione dà marialuisa. Ecco la funzione:
    
    char * elimina_spazi (char * str)
    {
        int x=0, y=0, i;
        for (i=0; i<str[i]; i++) {
            if (str[i]==' ') {
                x=i;
                y=1;
                break;
            }
        }
        //codice che sposta le lettere
        if (y==1) {
            for (int i2=x; i2<str[i2]; i2++)
                str[i2]=str[i2+1];
        }
        return str;
    }
    
    
    Poi quando l'utente inserisce il cognome e il nome, io lo leggo con fgets e non con scanf, e utilizzo la funzione appena creata
    
    printf("Inserire cognome: ");
        fgets(cognome, sizeof(cognome), stdin);
        strcpy(cognome, elimina_spazi(cognome));
        printf("Inserire nome: ");
        fgets(nome, sizeof(nome), stdin);
        strcpy(nome, elimina_spazi(nome));
    
    Poi c'è il resto del codice e il programma mi calcola il codice fiscale. Ma inseriti i miei dati anzichè stamparmi in output F**FBA97*******Q mi stampa:
    F**FB
    97B******Q
    Salta quindi la A di FBA e va a capo
    Come mai?
  • Re: Leggere solo una riga da un file in c

    Aiutatemi per favore
  • Re: Leggere solo una riga da un file in c

    Ho risolto eliminando il carattere "a capo" a fine stringa
Devi accedere o registrarti per scrivere nel forum
56 risposte