PDA

Visualizza la versione completa : [C] Leggere dati da file e scriverli una sola volta


Mattia83
23-08-2005, 17:01
Sono nuovo nella prog. in C ed avrei bisogno di alcuni suggerimenti su un programmino che sto scrivendo. Devo leggere da un file dei codici, scrivendoli una sola volta se ne trovo + di uno.
I codici nel file sono scritti cosi x esempio:

PJ1E2431440007
RS10004
RS10170
RS10180
RS10190
RS103161C00001
PJ1E243
RR1F3940009329

Questo è quello che ho scritto finora:

#include <stdio.h>
#include <stdlib.h>

char data[14];
FILE *cfPtr;
FILE *listPt;

char i=0;
int main()
{
cfPtr = fopen("c:\\ESTRAOUT.OUT","r");
listPt = fopen("c:\\lista.txt","w");
while(!feof(cfPtr))
{

fscanf(cfPtr,"%3s%*s",data);

fprintf(listPt,"%s\n",data);
++i;

}

fprintf(listPt,"Totale studi in elaborazione: %d\n",i);
fclose(cfPtr);
fclose(listPt);
system("PAUSE");
return 0;

}

A me serve solo i primi 3 caratteri del codice (PJ1 x esempio) e tutti i codici devono essere scritti nel file una sola volta.
Per favore aiutatemi.
Ps: è possibile memorizzare in un ciclo while una stringa in un array per poi richiamarla con array[i]? nel mio caso posso memorizzare ad ogni giro del ciclo un codice in data per poi richiamarlo con data[i] e mettendo che io voglia sapere che codice ho rilevato al 3° giro, quindi i=3, con data[3] mi restituisca proprio il codice del 3° giro?
Se fino adesso ho detto solo minchiate, come si puo fare?.
Vi ringrazio in anticipo

Mattia83
24-08-2005, 10:13
Se non sono stato chiaro a spiegare il mio problema o ho detto solo fesserie, per favore non esitate a dirmelo e a chiedermi spiegazioni. Non ho proprio idea di come fare a risolverlo. :bhò: :confused: :cry:

alka
24-08-2005, 10:23
Originariamente inviato da Mattia83
Se non sono stato chiaro a spiegare il mio problema o ho detto solo fesserie, per favore non esitate a dirmelo e a chiedermi spiegazioni. Non ho proprio idea di come fare a risolverlo. :bhò: :confused: :cry:
Secondo me, dato che sei nuovo, dovresti innanzitutto leggere il nostro Regolamento (http://forum.html.it/forum/showthread.php?s=&threadid=862015) che espone tutte le regole di buona convivenza all'interno di quest'area del forum, in particolare descrivendo come si scrivono i titoli.

Nel tuo caso, il titolo è molto generico e non rispetta le convenzioni, quindi potrebbe essere un deterrente ad un'eventuale buona volontà dei partecipanti a risponderti, poichè l'argomento non è chiaro.

Modifico il titolo ma cerca di scriverli più significativi in futuro, se non altro a tuo vantaggio poichè aumenti le possibilità di ricevere risposta.

Ciao! :ciauz:

Mattia83
24-08-2005, 10:32
Signor moderatore mi scuso veramente tanto ed elimino il mio account qui da voi.

anx721
24-08-2005, 12:52
Per evitare di scrivere piu volte lo stesso codice nel file devi tenerti in memoria i codici letti, puo ad esempio allocarti anzicchè un array di caratteri un array di array:

char[100][4] data;

se sai che non ci saranno più di 100 codici diversi e i codici sono lunghi 3 caratteri.

Nel while leggi il nuovo cdoice, controlli se già esiste in data e se non esiste lo aggiungi nella prossima locazione libera. Poi con un altro ciclo scrivi i codici nel file.

Loading