PDA

Visualizza la versione completa : [C] scrivere su file


AMRITA1979
19-10-2007, 13:13
Sto scrivendo un client, che legge dei dati inviati da un server.
Io vorrei poter scrivere questi dati che visualizzo nella shell in un file.txt.
Sto usando la funzione fopen, ma penso di sbagliare qualche cose.
Vorrei sapere se nel path della fopen gli devo dare i dati che leggo e come gleili devo dare, visto che il mio client legge i dati da un char command[].

oregon
19-10-2007, 13:29
Da un char command?

Ma cosa vuoi dire?

Cosa hai scritto?

AMRITA1979
19-10-2007, 13:44
Voglio dire che io quando lancio il mio programma da shell leggo dei dati da un server.
Questi dati io li devo mettere su un file e quindi vorrei scrivere una routine in modo tale che dopo che ho visto i dati sullo schermo li ho anche salvati su di un file.

alka
19-10-2007, 13:45
Il linguaggio? Letto il Regolamento (http://forum.html.it/forum/showthread.php?s=&threadid=973887)?

oregon
19-10-2007, 13:49
Ma come li leggi questi dati dal server? Da dove vengono? Da un database?

Insomma ... se non dai maggiori dettagli, non si puo' mica rispondere ...

AMRITA1979
19-10-2007, 13:53
Scusate, il programma lo sto scrivendo in C.

mondobimbi
19-10-2007, 14:01
se parli di C (come sembrerebbe) alla fopen devi passare il path completo del file su cui vuoi scrivere e come secondo argomento la modalit con cui vuoi aprire il file
La funzione di ritorna un puntatore a FILE che una struttura che contiene tutte le informazioni del file che hai appena aperto (numero del descrittore, puntatore al buffer, dimensione del file etc).
La chiamata
FILE *fd = fopen("mio_file.txt", "w");
e lo hai aperto in scrittura.
A questo punto puoi usare le funzioni di i/o tipo fput ecc a cui passi sempre il puntatore fd.+
Poi chiudi tutto con
fclose(fd),

Prova anche come alternativa a fare un riindirizzamento tipo

$mio_cliente parametri > mio_file_testo.
Dipende da come fatto il tuo programma ma pu funzionare inviando tutto lo standard out sul tuo file di testo invece che allo schermo.

ciao
sergio

AMRITA1979
19-10-2007, 14:19
Io io dati dal server li leggo tramite la funzione read.
Il server prende questi dati da un misuratore di temperatura.
Quando lancio il client lui li legge e me li stampa sullo schermo.

oregon
19-10-2007, 14:24
Quindi, apri un file in scrittura con la fopen e con la fprintf scrivi sul file.

mondobimbi
19-10-2007, 14:28
se usi read allora i tuoi dati sono in un buffer, che un puntatore ad una stringa di caratteri terminante per \0.




FILE *f = fopen("/tmp/output.txt". "w");

.. ciclo lettura dati dal server

read(handle_del_dispositivo_da_cui_leggi, buffer, size);

fprintf(f, "%s", buffer);

... ripeti ciclo finch non finito

fclose(f);

....


ciao
sergio

Loading