Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2002
    Messaggi
    643

    [c] lettura e scrittura file

    Voglio leggere il contenuto di un file e metterlo in un altro che creo al momento.
    Se il file che leggo si chiama file quello che creo e in cui metto il contenuto del primo file si chiama nuovo_file
    Mi dite dove sbaglio ?
    L'errore dovrebbe essere nella fgets, ma perche' ?
    codice:
    #include <stdlib.h>
    #include <stdio.h>
    #include <string.h>
    #include <windows.h>
    #include <tchar.h>
    
    
    char *strcat(char *str1, const char *str2);
    
    main()
    {
    
    FILE *fp, *fp1;
    char ch, filename[40], mode[4];
    
    char *stringa;
    int n;
    int *ip;
    char *str;
    char *nuovo_file;
    
    char nuovo[7] = "nuovo_";
    
    
    /* Legge il nome del file e il modo */        
    printf("\nInserire il nome del file: ");
    gets(filename);
    
    /* Apertura del file */
    if((fp = fopen(filename, "r")) != NULL)
    {
    
    if ((stringa = (char *)malloc(80 * sizeof(char))) == 0)
    {
        printf("Non c'e' memoria disponibile da allocare\n");
         return 1;
    }
        else
    {
        printf("Allocata con successo memoria per la stringa\n");
    }
    int i;
    
    
    stringa = strcat(nuovo, filename);
    
    fp1 = fopen(stringa, "w");
    
    while(!feof(fp)){          
    fgets(stringa, 100, fp);
    
    fputs(stringa, fp1);
    
    }
    fclose(fp1);
    
    
    }
    
    getchar();
    }

  2. #2

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2002
    Messaggi
    643
    Il problema e' che non lo so nemmeno io, perche' non e' in fase di compilazione, ma di esecuzione, viene creato il nuovo file, me lo trovo nella cartella, vuoto, e il programma si impianta.

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Hai sbagliato ad usare la

    strcat

    Controlla dalla documentazione come si usa
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2002
    Messaggi
    643
    Pero' sulla strcat non mi da' errore, e ho provato a non utilizzarla e a mettere direttamente il nome del file in cui inserire il contenuto del primo file e l'errore e' identico, col file che viene creato, rimane vuoto e il programma si impianta.

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Originariamente inviato da Daisyland
    Pero' sulla strcat non mi da' errore
    Non hai nessun errore ma la memoria viene "sporcata" e i problemi sono dopo.

    ho provato a non utilizzarla e a mettere direttamente il nome del file in cui inserire il contenuto del primo file e l'errore e' identico
    Mostra come hai fatto ... devi sempre mostrare il codice.

    col file che viene creato, rimane vuoto e il programma si impianta.
    Si pianta ... non si "impianta" (che vuol dire altro)
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    Utente di HTML.it
    Registrato dal
    Mar 2002
    Messaggi
    643
    Originariamente inviato da oregon
    Non hai nessun errore ma la memoria viene "sporcata" e i problemi sono dopo.



    Mostra come hai fatto ... devi sempre mostrare il codice.



    Si pianta ... non si "impianta" (che vuol dire altro)
    Si pianta, chiaro.
    Hai ragione, ora l'ho tolta (avevo dimenticato di commentare una linea) e funziona.
    Pero' ho messo il nome del secondo file manualmente.
    Come funziona la strcat ? perche' ho guardato il manuale ed evidentemente ho sbagliato.
    Mi spiego, ho la stringa "nome_file.txt", voglio creare il file "nuovo_nome_file.txt" (quindi semplicemente concatenare "nuovo_" davanti e non riesco.

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Dovresti scrivere

    strcpy(stringa, nuovo);
    strcat(stringa, filename);
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  9. #9
    Utente di HTML.it
    Registrato dal
    Mar 2002
    Messaggi
    643
    Originariamente inviato da oregon
    Dovresti scrivere

    strcpy(stringa, nuovo);
    strcat(stringa, filename);
    Cosi' funziona.
    Ma non mi e' chiara una cosa sulla strcat, io non posso assegnare il risultato di strcat ad una stringa ?
    Perche' l'errore e' quello, se metto ad esempio
    codice:
    stringa_nuova = strcat(stringa, filename);
    e' un errore ?
    No, provato, funziona cosi', l'errore e' proprio il non mettere la strcpy.

  10. #10
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Originariamente inviato da Daisyland
    Cosi' funziona.
    Ma non mi e' chiara una cosa sulla strcat, io non posso assegnare il risultato di strcat ad una stringa ?
    Perche' l'errore e' quello, se metto ad esempio
    codice:
    stringa_nuova = strcat(stringa, filename);
    e' un errore ?
    No, provato, funziona cosi', l'errore e' proprio il non mettere la strcpy.
    L'errore è che prima non hai usato

    stringa

    come primo parametro della strcat (e quindi come destinazione).
    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.