Pagina 2 di 3 primaprima 1 2 3 ultimoultimo
Visualizzazione dei risultati da 11 a 20 su 27
  1. #11
    Utente di HTML.it L'avatar di KrOW
    Registrato dal
    Feb 2009
    Messaggi
    281
    Chiedo scusa per l' errore (scrivendo dal cellulare può accadere) e ringrazio MItaly per la correzione

  2. #12
    Non esiste una funzione standard già fatta?
    Se no, non posso leggere il file riga per riga e contare le letture? Come?

  3. #13
    Originariamente inviato da starcraftworld
    Non esiste una funzione già pronta?
    No, ma si può scrivere facilmente.
    codice:
    unsigned int GetRowsNumber(FILE * fp)
    {
        unsigned int lines=0;
        int ch;
        rewind(fp);
        do
        {
            ch=fgetc(fp);
            if(ch=='\n')
                lines++;
        } while(ch!=EOF);
        return lines;
    }
    Originariamente inviato da KrOW
    Chiedo scusa per l' errore (scrivendo dal cellulare può accadere) e ringrazio MItaly per la correzione
    Complimenti per l'abilità di scrivere codice da cellulare, io non ci riuscirei mai!
    Amaro C++, il gusto pieno dell'undefined behavior.

  4. #14
    Utente di HTML.it L'avatar di KrOW
    Registrato dal
    Feb 2009
    Messaggi
    281
    Infatti quando devo scrivere del codice più lungo di 6 o 7 righe, preferisco aspettare e inviarlo dal mio fedele amico PC

  5. #15
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Originariamente inviato da starcraftworld
    Non esiste una funzione standard già fatta?
    Ti ho dato (e altri ti hanno dato) piu' volte suggerimenti sul metodo da seguire (fopen, fscanf, lettura in un ciclo tramite fino all'EOF) e anche del codice.

    Ma chiedi ugualmente una funzione standard o codice pronto.

    Quando comincerai a scrivere qualcosa di tuo utilizzando gli aiuti che hai avuto?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  6. #16
    Quando comincierai a leggere tutto il post prima di criticare?
    Sto chiedendo se è possibile leggere il file per riga anzichè per carattere!

  7. #17
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Originariamente inviato da starcraftworld
    Quando comincierai a leggere tutto il post prima di criticare?
    Sto chiedendo se è possibile leggere il file per riga anzichè per carattere!
    Tu pensa a leggere la mia prima risposta!!
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  8. #18
    la fscanf legge una riga intera, non una parola alla volta!

  9. #19
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Originariamente inviato da starcraftworld
    la fscanf legge una riga intera, non una parola alla volta!
    Hai domandato

    Ho un file txt che in ogni riga ha due numeri separati da uno spazio.
    e quindi ti e' stato detto che puoi leggerli con una fscanf.

    Poi hai chiesto

    Come ottengo il numero di righe di un file?
    e si presume (altrimenti dovresti aprire un altro thread, da regolamento) che parliamo SEMPRE dello stesso file con i due numeri per ogni riga.

    Quindi la soluzione e' quella proposta ... in un ciclo in cui controlli l'EOF, leggi con la fscanf i due numeri e (come ti e' stato detto) aumenti un contatore. Alla fine avrai il numero delle righe (vedi risposta di KrOW).

    Ora ti chiedo ... hai seguito i consigli e scritto del codice?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  10. #20
    FILE *file;
    char nomeFile[50];
    printf ("Inserire il nome del file di input: ");
    scanf ("%s",nomeFile);
    if ((file=fopen(nomeFile,"r"))==NULL) {
    printf ("Errore: impossibile aprire il file %s",nomeFile);
    getchar();
    exit (1);
    } /* if */
    int lenght=0;
    int c;
    do {
    c=fgetc (file);
    if (c=='\n')
    lenght++;
    } while (c!=EOF); /* do-while */
    int x[lenght], y[lenght];
    int i=0;
    for (i=0;i<lenght;i++) {
    fscanf (file,"%d",&x[i]);
    fscanf (file,"%d",&y[i]);
    } /* for */
    printf("%d",x[2]); /* <- riga che testa la corretta lettura */
    fclose(file);

    La riga che testa la corretta lettura dovrebbe ritornare 4 invece ritorna un numero molto lungo (circa 10 cifre) che non compare nel mio file.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.