Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    1,786

    [C] Aprire & Salvare File

    Salve,

    sono nuovo qui, in questa sezione non ero mai venuto.

    da circa un mese ho inizioto lo studio del c.

    oggi volevo fare un piccolo programma:

    apre un file di testo, cambiare il contenuto della prima riga è lasciare il resto invariato, salvare le modifiche.

    quindi ho scritto:

    codice:
    #include <stdio.h> 
    
    int main () 
    { 
       FILE *File; 
       char Testo[] = "Prova di output su file"; 
        
       File = fopen("file2.txt","at"); 
       fputs(Testo,File); 
       fclose(File); 
       return 0; 
    }
    ma cosa sbaglio

    grazie per l'aiuto
    [Scambio Links a Tema] Contattatemi in Privato x + Info.

  2. #2
    ma cosa sbaglio
    Questo ce lo devi dire tu
    Cosa non va nel verso giusto?

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    1,786
    non aggiorna il file cambiando la prima riga con questo: Prova di output su file

    ma fa un nuovo file di testo con il suo interno solo questo: Prova di output su file
    [Scambio Links a Tema] Contattatemi in Privato x + Info.

  4. #4
    Utente di HTML.it L'avatar di Fox82
    Registrato dal
    Feb 2002
    Messaggi
    459
    Non capisco il parametro "at" nella funzione fopen: che io sappia i parametri sono "r", "w", "a" seguiti da "+" per indicare entrambe le modalità (eventualmente puoi aggiungere una "b" prima o dopo il "+", ma niente altro)

    Tieni presente che aprendo un file in modalità "a" il cursore si trova alla fine del file, quindi non ti troverai sull'ultima riga.
    Linux user number 403381

    Stop TCPA!

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    1,786
    mi fai un piccolo esempio di codice ?

    grazie !
    [Scambio Links a Tema] Contattatemi in Privato x + Info.

  6. #6
    Utente di HTML.it L'avatar di Fox82
    Registrato dal
    Feb 2002
    Messaggi
    459
    Un particolare che mi ero dimenticato: il file aperto in modalita append non permette la sovrascrittura delle parti già scritte ma solo "l'allungamento" del file.

    Per sovrascrivere devi aprire il file in modalità "r+", il resto del codice va bene. Attento però che la lunghezza nuova riga deve essere uguale alla vecchia: altrimenti se è più corta ti troverai i resti della vecchia nella seconda riga, se è più lunga "sconfinerai" nelle righe successive


    Linux user number 403381

    Stop TCPA!

  7. #7
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    1,786
    mi puoi fare un esempio per favore di come si fa ?
    [Scambio Links a Tema] Contattatemi in Privato x + Info.

  8. #8
    Utente di HTML.it L'avatar di Fox82
    Registrato dal
    Feb 2002
    Messaggi
    459
    Ripeto, il tuo codice funziona: devi solo cambiare il parametro "at" della funzione fopen con "r+"

    Linux user number 403381

    Stop TCPA!

  9. #9
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    1,786
    non va

    mi scrive un file nuovo, non aggiunge o sostituisce la prima riga
    [Scambio Links a Tema] Contattatemi in Privato x + Info.

  10. #10
    Originariamente inviato da Fox82
    Non capisco il parametro "at" nella funzione fopen: che io sappia i parametri sono "r", "w", "a" seguiti da "+" per indicare entrambe le modalità (eventualmente puoi aggiungere una "b" prima o dopo il "+", ma niente altro)

    Tieni presente che aprendo un file in modalità "a" il cursore si trova alla fine del file, quindi non ti troverai sull'ultima riga.
    Il parametro "t" indica che il file va aperto in modalità testuale ("b" per modalità binaria)

    A dire il vero non so se quello che vuoi fare tu si pùò fare così facilmente, con un solo comando.

    E' comunque fattibile:
    -apri il file in lettura
    -conti il numero di caratteri che lo compongono
    -crea un buffer di char dinamicamente
    char *buff = malloc(caratteri_in_file * sizeof(char));
    -copia il contenuto del file in buff
    -chiudi il file
    -modifica buff a piacimento
    -apri il file in scrittura ("wt");
    -copiaci buff dentro
    -chiudi il file
    -libera la memoria free(buff);

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.