Originariamente inviato da cicciox80
Ho risolto! Avevo sbagliato io a fare lo scanf, non passando il puntatore!
....
p.s. ora sorge un altro problema: se ho inserito già dei caratteri ma non ho fatto invio nei 5 secondi, vorrei "svuotare il buffer". Come si può fare?codice:#include <stdio.h> #include <stdlib.h> #include <sys/time.h> #include <sys/types.h> #include <unistd.h> int main(void) { fd_set rfds; struct timeval tv; int retval; /* Watch stdin (fd 0) to see when it has input. */ FD_ZERO(&rfds); FD_SET(fileno(stdin), &rfds); /* Wait up to five seconds. */ tv.tv_sec = 5; tv.tv_usec = 0; retval = select(1, &rfds, NULL, NULL, &tv); /* Don't rely on the value of tv now! */ int n; if (retval == -1) perror("select()"); else if (retval) { printf("Data is available now.\n"); /* FD_ISSET(0, &rfds) will be true. */ scanf("%d", &n); } else { printf("No data within five seconds.\n"); /*Svuota il buffer*/ while(getchar() != '\n); } printf("n=%d\n", n); return 0; }

Rispondi quotando