Questo è il codice che ho usato io per il progetto di sistemi operativi all'universitàcodice:while (flag) { if ((bytes=read(sock,buf,512))<0) { perror("Impossibile leggere dal socket\n"); exit(1); } switch (bytes) { case 0 : { //Lettura terminata flag=0; break; } default : { //Controllo della presenza del carattere terminatore tra i dati inviati e stampa dei dati a video if (buf[bytes-2]!='\0') { //Il carattere non è presente quindi si continua buf[bytes-1]='\0'; write(STDOUT_FILENO,buf,bytes-1); } else { //Il carattere è presente, si stampa il contenuto del buffer e si modifica la flag write(STDOUT_FILENO,buf,bytes-2); flag=0; } } } }
Testato su Suse Linux 10.0
Come puoi vedere ogni volta che ricevo dati nel buffer tramite la read controllo se nell'ultimo carattere valido è presente il carattere \0. se c'è modifico la flag e interrompo il ciclo, altrimenti mi limito a inserire io il carattere terminatore e stampare il buffer a schermo.
E cosi eviti di usare questa fantomatica readline del tuo prof![]()

Rispondi quotando