Pagina 1 di 6 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 53
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    636

    programmino con file di ingresso .txt (in C)

    ciao a tutti
    come faccio a dare in input un file di ingresso (ingresso.txt) e dopo le opportune operazioni produrrre un fle di uscita (uscita.txt)
    il file ingresso.txt ha memorizzati N risultati di un prova d'esame.
    bel file l'informazione è suddivisa in campi
    come posso fare?

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462

    Re: programmino con file di ingresso .txt (in C)

    Originariamente inviato da jurij7
    come posso fare?
    Non sai assolutamente come fare oppure hai scritto qualcosa e non ti funziona?

    Nel primo caso, dai un'occhiata alle istruzioni di I/O da file (fopen, fscanf, fprintf, fclose) magari da un libro di programmazione in C di base.

    Nel secondo caso, mostra il codice e indica gli errori.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    636
    ecco, ho fatto questo per creare un file ingresso.txt
    codice:
    #include <stdio.h>
    #include <stdlib.h>
    
    /*
     * 
     */
    int main() {
    
        int ordine;
        char cognome[20];
        int voto;
    
        FILE *cfPtr; /*cfPtr = punta al file ingresso.txt*/
    
        /*fopen apre il file*/
        if ((cfPtr = fopen("ingresso.txt", "w")) == NULL){
            printf ("Il file non può essere aperto");
        }
    
        else{
            printf ("Inserisci ordine, cognome, ed il voto : \n");
            printf ("Inserisci -1 per terminare l'inserimento \n");
            scanf ("d%s%d", &ordine, cognome, &voto);
    
            /*scrive nel file*/
    
            while (!feof(stdin)){
                fprintf (cfPtr, "%d %s %d\n", ordine, cognome, voto);
                scanf ("%d%s%d", &ordine, cognome, &voto);
            }
    
             fclose(cfPtr);
    
            }
    
    
    
    
        return 0;
    }
    ma l'EOF non funziona..cioè non termina..come mai?
    cioè devo usare una particolare combinazione di tasti tipo ctrl-z (per windows) oppure posso assegnare un tasto specifico?

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Ma perche' non posti PRIMA il codice (nel tuo PRIMO post) con le indicazionidei problemi, piuttosto che fare tutto questo giro di post prima di arrivare al nocciolo della questione?

    Cosi' si perde tutti del tempo ...

    1) Hai aperto un file che si chiama "ingresso.txt" e che quindi vuoi leggere, in modalita' scrittura "w", e questo e' ovviamente sbagliato. Se vuoi leggere da un file, devi aprirlo in modalità lettura "r" (controlla la documentazione della fopen);

    2) in seguito acquisisci i dati da tastiera (e non da file ingresso.txt) e scrivi nel file che avevi aperto in precedenza ... allora, volevi scrivere nel file ... quindi e' giusto aprirlo in scrittura "w" ma sarebbe bene chiamarlo "uscita.txt" ...

    3) se hai inserito nelle istruzioni "Inserisci -1 per terminare l'inserimento" allora non devi controllare l'EOF da tastiera nel ciclo ma se hai inserito -1 nella variabile ordine, che e' meglio inserire con una scanf apposita e controllare ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    636
    prima non avevo ultimato il codice.
    questo codice che ho scritto è solo per creare il file ingresso.txt che faro leggere successivamente da un altro.

    se faccio così
    codice:
    #include <stdio.h>
    #include <stdlib.h>
    
    /*
     * 
     */
    int main() {
    
        int ordine;
        char cognome[20];
        int voto;
    
        FILE *cfPtr; /*cfPtr = punta al file ingresso.txt*/
    
        /*fopen apre il file*/
        if ((cfPtr = fopen("ingresso.txt", "w")) == NULL){
            printf ("Il file non può essere aperto");
        }
    
        else{
            printf ("Inserisci ordine, cognome, ed il voto : \n");
            printf ("Inserisci EOF per terminare l'inserimento \n");
            scanf ("d%s%d", &ordine, cognome, &voto);
    
            /*scrive nel file*/
    
            while (!feof(stdin)){
                fprintf (cfPtr, "%d %s %d\n", ordine, cognome, voto);
                scanf ("%d%s%d", &ordine, cognome, &voto);
            }
    
             fclose(cfPtr);
    
            }
    
    
    
    
        return 0;
    }
    l'EOF è la combinazione <ctrl> z ?

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Ma se fai una domanda (nel tuo primo post, lettura di un file e scrittura di un secondo file) e poi parli di altro (creazione del primo file da tastiera), come si fa a capire?

    Comunque, l'EOF per Windows e' il Ctrl-Z (seguito da Invio, ovviamente) ... ma potevi anche provare da solo piuttosto che scrivere due post ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    636
    ecco...allora creo un file ingresso.txt
    codice:
    #include <stdio.h>
    #include <stdlib.h>
    
    /*
     * 
     */
    int main() {
    
        int ordine;
        char cognome[20];
        int voto;
    
        FILE *cfPtr; /*cfPtr = punta al file ingresso.txt*/
    
        /*fopen apre il file*/
        if ((cfPtr = fopen("ingresso.txt", "w")) == NULL){
            printf ("Il file non può essere aperto");
        }
    
        else{
            printf ("Inserisci ordine, cognome, ed il voto : \n");
            printf ("Inserisci EOF per terminare l'inserimento \n");
            scanf ("d%s%d", &ordine, cognome, &voto);
    
            /*scrive nel file*/
    
            while (!feof(stdin)){
                fprintf (cfPtr, "%d %s %d\n", ordine, cognome, voto);
                scanf ("%d%s%d", &ordine, cognome, &voto);
            }
    
             fclose(cfPtr);
    
            }
    
    
    
    
    
    
        return 0;
    }
    poi ho fatto questo per leggerlo

    codice:
    #include <stdio.h>
    #include <stdlib.h>
    
    /*
     *
     */
    int main() {
    
        int ordine;
        char cognome[20];
        int voto;
    
        FILE *cfPtr; /*cfPtr = punta al file ingresso.txt*/
    
        /*fopen apre il file*/
        if ((cfPtr = fopen("ingresso.txt", "r")) == NULL){
            printf ("Il file non può essere aperto");
        }
        else{
            printf ("%d%s%d", "Ordine","Cognome","Voto");
            fscanf (cfPtr, "d%s%d", &ordine, cognome, &voto);
    
        while (!feof(stdin)){
                printf ("%d%s%d\n", ordine, cognome, voto);
                fscanf (cfPtr, "%d%s%d", &ordine, cognome, &voto);
            }
        }
        fclose(cfPtr);
    
        return 0;
    }
    ma non capisco come devo fare per farli comunicare tra di loro, devo usare 2 progetti differenti ..come ho fatto ora?

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Puoi usare un solo progetto e un solo main.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  9. #9
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    636
    e li metto in sequenza o richiamati da una funzione?

  10. #10
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Come vuoi ... sei tu il programmatore ... sei tu che decidi ...

    Importante e' che ci sia un solo main ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

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.