PDA

Visualizza la versione completa : Scrittura su file C


AMRITA1979
04-07-2008, 17:21
Ciao,
Ho scritto un ccodice che legge dei valori da un server e poi man mano che li legge li scrive su un file.
A un certo punto , man mano che legge, la scrittura si interrompe, e entra nel ciclo di controllo del file, cioè in questo ciclo di controllo:

fprintf(stream,"%s",temp);
#ifdef DEBUG
printf("Scrivo su file");
#endif
// ciclo di controllo sul file
if (fopen("NTC.dat", "w+") == NULL)
{
printf("I can write the file %s\n");
return -1;

}
e quindi chiude la connessione .
Non riesco a capire quale sia il motivo, dato che questo pezzo di codice è inserito all'interno si un for infinito che si stoppa solo se si preme Ctrl-C

shodan
04-07-2008, 19:10
FILE* fp;
if ((fp=fopen("NTC.dat", "w+")) == NULL)

AMRITA1979
04-07-2008, 19:19
Scusa ma che risposta è...???
Certo che ho messo quello che scrivi tu all'inzio, infatti ho scritto solo il pezzo di codice che dovrebbe darmi errore.

shodan
04-07-2008, 19:35
No tu hai scritto:


fprintf(stream,"%s",temp);
#ifdef DEBUG
printf("Scrivo su file");
#endif
// ciclo di controllo sul file
if (fopen("NTC.dat", "w+") == NULL)
{
printf("I can write the file %s\n");
return -1;
}

non


fprintf(stream,"%s",temp);
#ifdef DEBUG
printf("Scrivo su file");
#endif
// ciclo di controllo sul file
if ((fp=fopen("NTC.dat", "w+")) == NULL)
{
printf("I can write the file %s\n");
return -1;
} else {
fclose(fp);
}

In pratica apri il file e non hai modo di chiuderlo se viene aperto. E i file descriptor non sono infiniti. Altro di strano non appare in quel codice.

AMRITA1979
04-07-2008, 19:45
Il file lo chiudo.
Dopo che chiudo anche il socket chiudo il file.
Comunque io avevo postato solo un pezzo di codice e non tutto, mi dispiace se ha creato confusione.

oregon
04-07-2008, 20:03
Originariamente inviato da AMRITA1979
Comunque io avevo postato solo un pezzo di codice e non tutto, mi dispiace se ha creato confusione.

E allora postalo tutto, perche' in effetti, c'e' un po' di confusione ...

AMRITA1979
04-07-2008, 21:03
Io lo potrei postare tutto, ma sono quasi 300 righe di codice..........

oregon
04-07-2008, 21:11
Forse tutto no ... ma comprenderai che se non chiarisci un po', non ti si puo' dare una mano.

In effetti ho delle perplessita' ...

1) in printf("I can write the file %s\n");

visualizzi un valore stringa che non c'e' ...

2) se la fopen in

if (fopen("NTC.dat", "w+") == NULL)

riesce ad aprire il file, dov'e' la variabile in cui conservi l'handle del file aperto?

3) quando scrivi


A un certo punto , man mano che legge, la scrittura si interrompe, e entra nel ciclo di controllo del file, cioè in questo ciclo di controllo:

non si puo' sapere perche' la lettura si interrompe se almeno non mostri la parte di codice che legge ... ne' come il codice potrebbe entrare nel "ciclo di controllo" ...

menphisx
05-07-2008, 00:57
Manca l'argomento:


printf("I can write the file %s\n");

MacApp
05-07-2008, 02:57
Come minimo non funziona perché:
1. Butti via il risultato della fopen;
2. Sbagli gli argomenti della printf;

Se anche funzionasse, in caso d'errore runtime cerchi di scrivere "I can write the" al posto di "I can't write to".
Quattro erroracci in quattro righe di codice non sono male. Chissà nelle altre trecento!

;-)

Loading