Problema stringhe e file

di il
1 risposte

Problema stringhe e file

Salve a tutti volevo sapere il prototipo della funzione fgets nel senso io ho aperto un file chiamato aziende.txt, devo scrivere così?
if ( (fp = fopen (\"aziende.txt\", \"r\") ) != NULL )
{
while(1)
{
res=fgets(buf, 200, fp);
if( res==NULL )
break;
}
else
{
fprintf(stderr, \"\\nErrore apertura file aziende.txt\\n\");
puts (\"Premere x per uscire\");
if ( ( ch= getc(stdin)) == 'x')
exit (0);
}

in questo modo però memorizzo ogni volta il nome di una azienda sullo stesso buf e quindi è lavoro inutile, come faccio a memorizzare ogni volta su una stringa diversa?
una cosa del genere funziona?
for(a=0;a<100;a++)
{
fgets(buf, 30, fp);
if (buf[0] != '\\n')
{
sscanf(buf,\"%s\",nomeditta); /* però qui come faccio a salvare una stringa diversa al variare di a?*/
}
}

1 Risposte

  • Re: Problema stringhe e file

    Guarda che .. .e' impensabile non usare puntatori liste o nel piu' semplice dei casi arrays....

    non so quante linee dovranno essere scritte nel file.. ma se quester possono superare le 1000 .. conviene creare un file virtuale (in ram , tanto per fare i lavori piu' velocemnte), costituito, nel piu' semplice dei casi, in array stringa... che ne so... Saziende[5000], di tipo string... , in cui effettui tutte le modifiche... (senza lavorare sui file per direttissima, senno in caso di riscrittura del codice per asltri sistemi oprtaivi, devi andartelo a rivedere in mill epunti..)

    su questo array fai le lavorazioni in RAM.. e quando vuoi tu. o quando chiudi il programma, effetui il salvataggio FISICO del file... aprendo il file aziende.txt e buttandoci dentro il contenuto dell' array...

    (naturalemente all'avvio del tuo programma.. carichi i file virtuali, nello stesso modo.. apri aziende.txt.. copi le linee nell'array.. e conservi l'indice raggiunto per le eventuali aggiunte...)


    so che usare gli array fanno un po pena... ma classi type me metodi, per quanto siano \"eleganti\" ed in grado di rendere gestibili strutture dati da pura follia.. si portano dietro un rallentamento dell'applicazione indescrivibile (valutabili solo in un engine 3D... un milione di vertici in un array, sono una cosa decisamente piu' veloce che un milione di tipi.. )
Devi accedere o registrarti per scrivere nel forum
1 risposte