PDA

Visualizza la versione completa : passare stringhe in c


lio.b
09-10-2009, 19:38
salve a tutti.
Ho un'applicazione client -server. Il client tramite fifo passa al server un file da cercare e il nome della fifo in cui vuole ricevere la risposta.
Il server ha una struttura cos definita:


typedef struct{
char nomePipe[20];
char nomeFile[20];
}messaggio;

e un metodo con questa segnatura


int presente(char *fileName)

Il server fa una read dalla fifo , estrae il nome del file ed invoca il metodo presente


byte = read(fd,&m,sizeof(messaggio))

If(presente(m.nomeFile)==1
/*altro codice*/

Il problema che non riesco a far partire il metodo presente. Non da errore il codice ma il metodo non viene seguito, come mai?

oregon
09-10-2009, 20:31
Ma scritto cosi'

If(presente(m.nomeFile)==1

non dovrebbe neanche compilare e darti degli errori. In primo luogo, perche' la If deve essere scritta in minuscolo e poi perche' manca una parentesi.

if(presente(m.nomeFile)==1)

lio.b
09-10-2009, 20:52
Si, ok, quello ovvio.
E' stato un'errore di battitura. Avevo il dubbio se passare m.nomeFile oppure &m.nomeFile. Sembra che con la seconda funzioni e mi sembra strano. Ho un problema con la namedpipe...mi si blocca il client. Te ne intendi? Se posto il codice potresti dirmi l'errore?
Grazie

oregon
09-10-2009, 21:06
Originariamente inviato da lio.b
Si, ok, quello ovvio.

Beh ... ovvio relativamente ... se scrivi in quel modo, non posso sapere se e' un errore di battitura o no ...

Bisogna essere precisi nel porre questioni tecniche ...


Avevo il dubbio se passare m.nomeFile oppure &m.nomeFile.

Dipende da come e' stata dichiarata la variabile m


Te ne intendi? Se posto il codice potresti dirmi l'errore?

Tu posta il codice e lo esaminano tutti, non solo io ... poi si vede se si puo' capire se qualcosa non va ...

lio.b
09-10-2009, 21:38
Ho aperto un altro topic come specificato dal regolamento del forum.
Grazie

Loading