PDA

View Full Version : [c] Problema in c con fgets()


lzanzan
27-05-2009, 10:02
ciao,

ho un problema con la funzione fgets(). io devo leggere da stdin delle parole per poi processarle, il mio problema è che se non inserisco nessuna parola e premo il tasto invio il mio programma esce dandomi segmentation fault.

vi posto il codice:

printf("\nPer connetterti ad un server utilizza il comando connect to + nome biblioteca\n");

sattivo=0;
while(sattivo!=1){

printf("-->");
fgets(string,sizeof(string),stdin);

decriptacomando(string, comando, &parametro);
printf("%s",comando[0]);
if((strcmp(comando[0], "connect")==0)&&(strcmp(comando[1], "to")==0)){

// Apro la fifo del server in scrittura
if((sscrittura = open(comando[2],O_WRONLY))<0){
printf("\tIl server non è avviato\n");
printf("\tRiprovare a connettersi\n");
}
else{
sattivo=1;
}

}

else if(strcmp(comando[0], "exit")==0){
printf("arrivederci\n");
exit(1);
}

else {
printf("Comando inserito per la connessione non corretto. RIPROVA\n");
}

}
printf("il server è attivo\n");

lzanzan
27-05-2009, 10:43
Problema risolto con l'inserimento di queste 4 righe dopo fgets

if (string[0]== '\n'){
printf("Comando non inserito\n");
continue;
}


printf("\nPer connetterti ad un server utilizza il comando connect to + nome biblioteca\n");

sattivo=0;
while(sattivo!=1){

printf("-->");
fgets(string,sizeof(string),stdin);

if (string[0]== '\n'){
printf("Comando non inserito\n");
continue;
}

decriptacomando(string, comando, &parametro);
printf("%s",comando[0]);
if((strcmp(comando[0], "connect")==0)&&(strcmp(comando[1], "to")==0)){

// Apro la fifo del server in scrittura
if((sscrittura = open(comando[2],O_WRONLY))<0){
printf("\tIl server non è avviato\n");
printf("\tRiprovare a connettersi\n");
}
else{
sattivo=1;
}