Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 18
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2004
    Messaggi
    118

    [C]Semplice esercizio lettura file di testo

    Salve a tutti, da giorni mi assilla un problemone riguardo un esercizio che devo fare l'università.

    L'esercizio sarà semplicissimo per molti di voi, ma io proprio non riesco a venirne a capo. Si tratta di creare un programma che dice quante lettere, parole e righe ci sono in un determinato file di testo. Purtroppo però non posso usare le librerie delle stringhe e quindi mi vedo costretto a creare io ogni funzione (ad esempio quella che misura la lunghezza di una stringa)

    L'esercizio si trova a questa pagina http://www.di.unito.it/~horvath/Dida...ercizio_3.html

    Ringrazio anticipatamente chiunque mi aiuterà nell'esercizio.

    A presto!

  2. #2

    strlen()

    Il size_t e' un unsigned int...

    codice:
    size_t strlen (const char *str) {
        size_t i;
      
        for (i=0; str[i]; i++);
    
        return (i);
    }
    Un po' banale ma ti serve anche questa...
    PoWered by:
    Gentoo 1.5.3 - Kernel 2.6.7
    Debian Sid - Kernel 2.6.7 - Bash 3.0
    Slackware current - Kernel 2.6.7

  3. #3
    Utente di HTML.it L'avatar di Ed_Bunker
    Registrato dal
    Jul 2003
    Messaggi
    1,119
    Non sempre corrisponde ad un unsigned int. Dipende dalla macchina anche se, nella maggior parte, e' appunto un int.

  4. #4
    Utente di HTML.it
    Registrato dal
    Jun 2004
    Messaggi
    118
    mmmmh ... indi?

  5. #5
    Utente di HTML.it L'avatar di Ed_Bunker
    Registrato dal
    Jul 2003
    Messaggi
    1,119
    Originariamente inviato da Riico
    mmmmh ... indi?
    Indi... puoi sostituire un int a size_t senza problemi. Il tipo size_t e' soltanto una ulteriore astrazione sul "reale" tipo che poi verra' utilizzato. Fatto sta che puoi utilizzare la strlen per inizializzare un intero senza nessun problema.

    ...
    char * name = "jonny";
    int length = strlen(name);
    ...

  6. #6
    Originariamente inviato da Ed_Bunker
    char * name = "jonny";
    si puo' fare ? :master:
    Con un puntatore non bisogna prima allocare la memoria con malloc o in c++ con new??

    io avrei fatto cosi':
    codice:
    char name[]="jonny";
    giusto? :gren:

    Vediamo..sogni che diventano professione...passioni che diventano vita... Free as in Freedom...

  7. #7
    Originariamente inviato da andrea_NET-_DSL
    si puo' fare ? :master:
    Con un puntatore non bisogna prima allocare la memoria con malloc o in c++ con new??

    io avrei fatto cosi':
    codice:
    char name[]="jonny";
    giusto? :gren:

    Sono due cose diverse.

  8. #8
    Originariamente inviato da Michele Facchin
    Sono due cose diverse.
    ok

    Vediamo..sogni che diventano professione...passioni che diventano vita... Free as in Freedom...

  9. #9
    Utente di HTML.it L'avatar di Ed_Bunker
    Registrato dal
    Jul 2003
    Messaggi
    1,119
    [QUOTE]Originariamente inviato da andrea_NET-_DSL
    [B]si puo' fare ? :master:
    Con un puntatore non bisogna prima allocare la memoria con malloc o in c++ con new??

    io avrei fatto cosi':
    codice:
    char name[]="jonny";
    Sarebbe meglio fare una malloc per allocare l'esatto spazio atto a contenere la stringa "jonny" comunque cosi' facendo hai un puntatore che punta alla stringa jonny. Non e' certo il massimo pero'...

  10. #10
    Utente di HTML.it
    Registrato dal
    Jun 2004
    Messaggi
    118
    grazie per l'aiuto che mi state dando, ma ho ancora parecchi dubbi.

    Per trovare quante parole ci sono in una riga ho creato la seguente funzione:

    codice:
    int parole (char *str) {
        int i,d=0;
      
        for (i=0; str[i]; i++)
        {
          if(str[i] == '\0')
          {
            printf("Aumento parole");
            d++;
          }
        }
    *str è la riga di un file di testo comprendente parole.

    Il problema è che non mi aumenta mai le parole quando vede uno spazio.
    Inoltre potrebbe essere una funzione un po' obsoleta dato che se io magari metto 5 spazi lui mi calcola 5 parole al posto di 0.

    Come potrei fare?
    Grazie ancora

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.