ciao a tutti!![]()
char *s = NULL;
scanf("%s",s);
mi aspetto che in s ci sia la stringa digitata ma invece c'e' NULL ....perche'? :master:
come faccio a leggere una stringa da tastiera?![]()
ciao a tutti!![]()
char *s = NULL;
scanf("%s",s);
mi aspetto che in s ci sia la stringa digitata ma invece c'e' NULL ....perche'? :master:
come faccio a leggere una stringa da tastiera?![]()
Perché scanf non alloca la memoria della stringa al posto tuo, ma si aspetta che sia già stata allocata. Pertanto dovrai fare qualcosa del genere:
Il 79 è per dire alla scanf di non leggere più di 79 caratteri, dati che in s c'è spazio solo per 79 caratteri più il NUL (terminatore finale).codice:char s[80]; scanf("%79s",s);
Amaro C++, il gusto pieno dell'undefined behavior.
e se non so la lunghezza della stringa digitata?
Generalmente si crea un buffer di dimensioni sufficienti per accogliere la più lunga stringa che possa essere ragionevolmente inserita, anche se un approccio migliore può essere recuperare la stringa "a rate" con la fgets in un buffer dinamico da riallocare di volta in volta, espandendolo.
Amaro C++, il gusto pieno dell'undefined behavior.
grazie.....sempre su questo argomento:
char string[50];
scanf ("%s",string);
digito : ciao pluto bello
in string ho solo "ciao" ed il resto? :master:
Al posto della scanf utilizza la fgets
fgets(string, 50, stdin);
No MP tecnici (non rispondo nemmeno!), usa il forum.
Grazie!per curiosita' che problemi dava la scanf?
Nessun problema ... per la scanf uno spazio è un delimitatore.
No MP tecnici (non rispondo nemmeno!), usa il forum.