Da un elenco di stringhe creare insieme di file - problema

di il
4 risposte

Da un elenco di stringhe creare insieme di file - problema

Buon giorno a tutti, sono gianni e sono nuovo del forum. Vi chiedo gentilmente un aiuto per risolvere il mio problema:
vorrei che per ogni riga letta da un file chiamato magazzino.txt, si crei un file di testo avente nome l'intera riga. Ogni riga del file magazzino ha lunghezza variabile e per questo ho creato un vettore di caratteri avente dimensione il numero di caratteri della riga più lunga. il codice è questo:

/*
Lettura di un file riga per riga.
*/

#include<stdlib.h>
#include<stdio.h>
FILE *fe;
FILE *fd;
char buf[400];
char *res;
int i,f;
main() {
/* apre il file */


fd=fopen("magazzino.txt", "r");
if(fd==NULL){
printf("errore apertura file");
exit(1);}

/* legge ogni riga e crea il file*/
res="a";
while(res!=NULL){
res=fgets(buf,401,fd);
fe=fopen(buf,"wt");
fclose(fe);
}
/* chiude il file magazzino*/
fclose(fd);

}


si blocca al primo giro della prima chiusura di fe.
Vi ringrazio anticipatamente.
cordiali saluti

4 Risposte

  • Re: Da un elenco di stringhe creare insieme di file - problema

    Io proverei una soluzione di questo tipo:
    
    #include <stdlib.h>
    #include <stdio.h>
    #include <string.h>
    
    int main()
    {
    FILE *fe;
    FILE *fd;
    char buf[400];
    char *res;
    char path[400];
    fd=fopen("/home/sergio/magazzino.txt", "r");
    if(fd==NULL)
        {
        printf("errore apertura file");
        exit(1);
        }
    while(1)
        {
        res=fgets(buf, 400, fd);
        if(res==NULL)
            break;
        buf[strlen(buf)-1]='\0';
        sprintf(path,"/home/sergio/%s",buf);
        fe=fopen(path,"w");
        fclose(fe);
        }
    fclose(fd);
    return 0;
    }
    
    
  • Re: Da un elenco di stringhe creare insieme di file - problema

    Buona sera e grazie per la risposta immediata... ho provato ad avviare il programma... su 3000 righe circa crea circa 700 file e poi si ferma. Puo essere legato al non utilizzo di qualche funzione per liberare il buffer tipo fflush? spiegarmi teoricamente cosa fa con questi 2 passaggi e il perchè di questa scelta... che funziona meglio della mia? grazie ancora
  • Re: Da un elenco di stringhe creare insieme di file - problema

    Non so che dirti, ho provato con 3095 parole e devo dire che mi ha aperto 3095 file vuoti...
    Comunque sostanzialmente non ho cambiato quasi nulla, se non il modo di leggere riga per riga il file ed il fatto di dover costruire con sprintf la stringa per aprire i file.
    Prova a passarmi il file che utilizzi tu, così ci leviamo il pensiero
  • Re: Da un elenco di stringhe creare insieme di file - problema

    Se mi dai una mail te lo mando... non me lo fa allegare un file txt... mi dice formato non permesso...
Devi accedere o registrarti per scrivere nel forum
4 risposte