Oppure

Loading
26/11/09 12:00
HackerV88
Salve vorrei leggere da tastiera una stringa comprensiva di spazi che termina con la pressione del tasto enter.COmeposso fare?
aaa
26/11/09 13:45
Guglielmo
Utilizza la funzione fgets.
Ecco il suo prototipo:
char *fgets(char *s, int size, FILE *stream);

Come primo argomento gli passi il vettore che conterrà la stringa, come secondo la grandezza dello stesso, e come ultimo lo stream da cui vuoi leggere dati(in questo caso stdin).
Ultima modifica effettuata da Guglielmo 26/11/09 13:46
aaa
26/11/09 14:46
lorenzo
appunto perché riceve uno stream la fgets viene usata per leggere dai files....devi usare la gets(senza la f davanti) che legge direttamente dalla console
aaa
26/11/09 15:00
Lawliet
Postato originariamente da lorenzo:

appunto perché riceve uno stream la fgets viene usata per leggere dai files....devi usare la gets(senza la f davanti) che legge direttamente dalla console


Tempo fa, grazie al forum e un utente ho capito che era meglio usare la fgets, e mettere come flusso di stream: stdin così legge da tastiera ed è più sicuro rispetto a gets che è soggetta da buffer overflow :)
aaa
26/11/09 15:03
Guglielmo
Postato originariamente da Lawliet:

Postato originariamente da lorenzo:

appunto perché riceve uno stream la fgets viene usata per leggere dai files....devi usare la gets(senza la f davanti) che legge direttamente dalla console


Tempo fa, grazie al forum e un utente ho capito che era meglio usare la fgets, e mettere come flusso di stream: stdin così legge da tastiera ed è più sicuro rispetto a gets che è soggetta da buffer overflow :)

Si teoricamente bisognerebbe usare la gets per l'stdin, però è rischiosa perchè se l'utente inserisce un numero di caratteri superiore alla grandezza del vettore si rischia di avere problemi non tanto carini(vedi buffer overflow).
Ultima modifica effettuata da Guglielmo 26/11/09 15:04
aaa
26/11/09 20:14
HackerV88
Buonasera,
allora mi postate qualche linea di codice per farmi capire?
aaa
27/11/09 13:49
Guglielmo
Postato originariamente da HackerV88:

Buonasera,
allora mi postate qualche linea di codice per farmi capire?

...
#define STR_SIZE 512
...
char buffer[STR_SIZE];
fgets(buffer, STR_SIZE, stdin);
...
aaa