|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Mar 2006
Messaggi: 131
|
[C]funzione void inizializza variabile dentro il blocco,se controllo fuori e' vuota..
ho una funzione
receive(char *msg,int fd) che fa due read sulla pipe indicata dal file descriptor fd --la prima legge la grandezza del messaggio dalla prima write del client per la malloc con la quale inizializza msg --la seconda legge e salva in msg il messaggio ricevuto dalla seconda write del client se faccio una stampa di controllo da dentro verifico che msg punta effettivamente al messaggio appena ricevuto. se faccio invece una stampa di controllo dal main da dove chiamo la funzione,mi stampa a vuoto,la variabile non e' inizializzata. DAL MAIN DEL RECEIVER CHIAMO LA FUNZIONE COSI': int fd;//inizializzo fd dopo l'apertura della pipe sulla read... char *s; receive(s,fd); printf("%s\n",s);//questa chiamata stampa a vuoto,se invece la faccio dalla funzione la variabile e' stata effettivamente inizializzata col messaggio... spero di esser stato chiaro,e nel caso che possiate suggerirmi una soluzione grazie mille |
|
|
|
|
|
#2 | |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
Hai 2 possibilità: (1) Fai ritornare un char* Codice:
char* receive(int fd)
{
char *msg;
....
return msg;
}
Codice:
void receive (char **pmsg, int fd)
{
char *msg;
....
*pmsg = msg;
}
Codice:
char *s; receive (&s, fd);
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 12:50.




















