Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 21
  1. #1
    Utente bannato
    Registrato dal
    Apr 2004
    Messaggi
    1,392

    [c++] Operare con i files...

    Ciao Ragazzi,
    Volevo imparare ad operare con i files sia in lettura che in scrittura, ma sto avendo alcuni problemi...
    Conosco le funzioni fopen, fread, fwrite ed fclose, ma ho dei dubbi:
    Allora, so che con fopen apro un determinato file, ma non so poi come scrivere o leggere...
    Mi potete fare un esempio di come utilizzarli?
    Magari postate un messaggio contenente il codice necessario per:
    1. Aprire il file;
    2. Leggere tutto il contenuto di un file e scriverlo nella console;
    3. Scrivere la parola 'ciao' in un file;
    4. Chiudere il file

    Naturalmente usate dei nomi casuali per indicare il file da leggere e quello da scrivere...

    Spero sappiate aiutarmi... Grazie per qualsiasi aiuto...

  2. #2
    Utente di HTML.it L'avatar di anx721
    Registrato dal
    Apr 2003
    Messaggi
    2,352
    Ti consiglio di leggerti la reference delle funzioni del c++. Le funzioni che hai nominato sono quelle del c. In c++ puoi utilizzare le funzioni del c o le funzioni delle librerie ofstream e ifstream proprie del c++.

    Qui:

    http://www.cplusplus.com/ref/

    trovi un elenco di tutte le librerie standard del c e del c++; per i file vai sulla iostream library e poi scegli ofstream e ifstream per avere la documentazione delle funzioni di iput e output sui file; oltre alla documentazione spesso ci sono piccoli esempi d'uso.

    Una guida sul c in italiano la puoi trovare qui:

    http://www.hyperbook.it/c_book/c2.htm

    Per il resto basta fare un po di ricerca su goole per trovare un sacco di materiale cu c++,


    Sun Certified Java Programmer

    EUCIP Core Level Certified

    European Certification of Informatics Professionals

  3. #3
    Utente bannato
    Registrato dal
    Apr 2004
    Messaggi
    1,392
    Originariamente inviato da anx721
    Ti consiglio di leggerti la reference delle funzioni del c++. Le funzioni che hai nominato sono quelle del c. In c++ puoi utilizzare le funzioni del c o le funzioni delle librerie ofstream e ifstream proprie del c++.

    Qui:

    http://www.cplusplus.com/ref/

    trovi un elenco di tutte le librerie standard del c e del c++; per i file vai sulla iostream library e poi scegli ofstream e ifstream per avere la documentazione delle funzioni di iput e output sui file; oltre alla documentazione spesso ci sono piccoli esempi d'uso.

    Una guida sul c in italiano la puoi trovare qui:

    http://www.hyperbook.it/c_book/c2.htm

    Per il resto basta fare un po di ricerca su goole per trovare un sacco di materiale cu c++,

    Dubbio...
    con fread posso leggere solo i primi 100 caratteri?
    esistono funzioni di lettura e scrittura su file per il c++ che non hanno questo problema?

  4. #4
    Utente di HTML.it L'avatar di anx721
    Registrato dal
    Apr 2003
    Messaggi
    2,352
    fread prende 4 parametri e sei tu che specifichi col terzo parametro quanti elementi devi leggere:

    elementi = 100;
    dimensione = 1;
    n = fread(buf, dimensione, elementi, fp);

    ma anche:

    elementi = 500;
    dimensione = 1;
    n = fread(buf, dimensione, elementi, fp);


    l'importante è che l'array buffer sia grande abbastanza per contenere i caratteri letti.

    Un'altra documentazione sulle funzioni c/c++ è

    http://www.cppreference.com/

    mentre qui trovi una lezione sull'I/O del c++:

    http://www.cplusplus.com/doc/tutorial/tut6-1.html


    Sun Certified Java Programmer

    EUCIP Core Level Certified

    European Certification of Informatics Professionals

  5. #5
    Utente bannato
    Registrato dal
    Apr 2004
    Messaggi
    1,392
    Originariamente inviato da anx721
    fread prende 4 parametri e sei tu che specifichi col terzo parametro quanti elementi devi leggere:

    elementi = 100;
    dimensione = 1;
    n = fread(buf, dimensione, elementi, fp);

    ma anche:

    elementi = 500;
    dimensione = 1;
    n = fread(buf, dimensione, elementi, fp);


    l'importante è che l'array buffer sia grande abbastanza per contenere i caratteri letti.

    Un'altra documentazione sulle funzioni c/c++ è

    http://www.cppreference.com/

    mentre qui trovi una lezione sull'I/O del c++:

    http://www.cplusplus.com/doc/tutorial/tut6-1.html

    ho fatto questo codice ma dà errore quando lo apro...
    codice:
    #include <stdio.h>
    
    /* Start the pointer of the file and the others variables*/
    FILE *fp;
    char ch;
    char buf[100];
    char cha;
    
    /* Start the main object */
    int main()
    {
    /* Open the file */
    fp = fopen("TEXT.TXT", "r");
    
    /* Read the first 100 char */
    ch = fread(buf, 1, 100, fp);
    
    /* Write the file on console */
    printf(buf);
    
    /* Close the file */
    fclose(fp);
    
    /* Insert the text to close the program */
    
    printf("Premi un tasto ed INVIO per uscire");
    scanf("%a", &cha);
    }
    
    /* End of the main object */
    
    /* End of the Program */
    perchè?
    Non ho capito bene a cosa serve il primo parametro di fread...

  6. #6
    Utente di HTML.it L'avatar di anx721
    Registrato dal
    Apr 2003
    Messaggi
    2,352
    A me non da errore,

    hai messo il file text.txt nella cartella del progetto?

    Il primo parametro di fread deve essere un array o un puntatore a ad una zona di memoria allocata con malloc; l'importante è che la dimensine dell'array o della zona allocata siano grandi a sufficienza per contenere tutti i dati letti, la cui dimensione in byte è data dal prodotto tra il secondo e il terzo paramentro della fread.

    Sun Certified Java Programmer

    EUCIP Core Level Certified

    European Certification of Informatics Professionals

  7. #7
    Utente bannato
    Registrato dal
    Apr 2004
    Messaggi
    1,392
    Originariamente inviato da anx721
    A me non da errore,

    hai messo il file text.txt nella cartella del progetto?

    Il primo parametro di fread deve essere un array o un puntatore a ad una zona di memoria allocata con malloc; l'importante è che la dimensine dell'array o della zona allocata siano grandi a sufficienza per contenere tutti i dati letti, la cui dimensione in byte è data dal prodotto tra il secondo e il terzo paramentro della fread.
    ok, risolto... grazie dell'aiuto.. ora vado a letto...
    Domani provo con la scrittura spero di non aver problemi...
    Grazie comunque di avermi dato l'indirizzo
    http://www.hyperbook.it/c_book/
    è ricco di informazioni utilissime!
    'notte

    PS: Come posso far stoppare l'esecuzione del programma solo quando viene premuto un determinato pulsante(senza bisogno del successivo invio)?

  8. #8
    Utente di HTML.it L'avatar di anx721
    Registrato dal
    Apr 2003
    Messaggi
    2,352
    Originariamente inviato da PaTeR
    PS: Come posso far stoppare l'esecuzione del programma solo quando viene premuto un determinato pulsante(senza bisogno del successivo invio)?
    non lo so

    Sun Certified Java Programmer

    EUCIP Core Level Certified

    European Certification of Informatics Professionals

  9. #9
    Utente bannato
    Registrato dal
    Apr 2004
    Messaggi
    1,392
    Originariamente inviato da anx721
    non lo so
    Perchè mi dà errore questo script?
    codice:
    FILE *fp;
    char ch;
    char buf[100];
    char cha;
    char word;
    int bytes;
    
    /* Start the main object */
    int main()
    {
        /* Read the word from the console */
        printf("Digita la parola da scrivere nel file:\n");
        scanf("%a",word);
        
        /* Count the characters in word */
        bytes = sizeof(word);
        
        /* Open the file */
        fp = fopen("TEXT_WRITE.TXT", "w");
        
        /* Write the file */
        ch = fwrite(word , bytes, 1, fp);
        
        /* Close the file */
        fclose(fp);
        
        /* Insert the text to close the program */
        
        printf("Premi un tasto ed INVIO per uscire\n\n");
        scanf("%a", &cha);
    }
    Note:

    25 ...\Scrittura.cpp invalid conversion from `char' to `const void*'

  10. #10
    Utente di HTML.it L'avatar di anx721
    Registrato dal
    Apr 2003
    Messaggi
    2,352
    Il primo parametro di fwrite deve essere un array o un puntatore a ad una zona di memoria allocata con malloc che contiene ciò che deve essere scritto nel file. Tu hai dichiarato word come un semplice carattere. Per di piu hai commesso un errore passando word come argomento della scanf: word deve essere dichiarato vome un array di interi per memorizzarci una stringa, altrimenti vai a sovrascrivere altre posizioni di memoria.

    Quindi innanzitutto dichiara word come

    int word[200];

    per esempio.

    Inoltre per leggere una stringa devi scrivere:

    scanf("%s",word);

    e non %a.

    Infine, per sapere la lunghezza della stringa immessa non devi usare sizeof(word), perche questo ti darà la dimensione dell'array che è sempre 200, ma devi utilizzare la funzione strlen contenuta in string.h:

    bytes = strlen(word);


    Sun Certified Java Programmer

    EUCIP Core Level Certified

    European Certification of Informatics Professionals

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 © 2024 vBulletin Solutions, Inc. All rights reserved.