AnonimoVeneziano
04-09-2004, 22:51
Ciao, mi trovo con uno stupido ma astioso problema.
In C ho sempre usato "scanf" come funzione per gestire in input tutti i tipi di dato possibile , ma mi sono trovato un po' confuso quando oggi , facendo un programmino d'allenamento per la gestione di alcune strutture di dato come liste concatenate, pile, code e alberi binari, ho scoperto che se si da in pasto a "scanf" una stringa multiparola (come ad esempio "Ciao Mondo", composta da 2 parole ) al primo spazio ci piazza un bel '\0' e tanti saluti!! Insomma , il mio "Ciao Mondo" diventa solo un "Ciao" .
A me sembra una grossa limitazione sinceramente!!
Ho cercato una funzione alternativa, e ho trovato "gets", ma gcc mi invia un inquietante messaggio alla compilazione :
melchior@melchior:~/Cprograms$ gcc -g stack.c -o stack
/tmp/ccJzP4My.o(.text+0x3e): In function `main':
/home/melchior/Cprograms/stack.c:21: warning: the `gets' function is dangerous and should not be used.
Penso perchè "gets" non fa il controllo dell' overflow e cerca di andare avanti a scrivere anche quando non c'è + memoria allocata (correggetemi se sbaglio) .
A questo punto come faccio a prendere in input una stringa multiparola?? Datemi un consiglio .
Grazie
Ciao
In C ho sempre usato "scanf" come funzione per gestire in input tutti i tipi di dato possibile , ma mi sono trovato un po' confuso quando oggi , facendo un programmino d'allenamento per la gestione di alcune strutture di dato come liste concatenate, pile, code e alberi binari, ho scoperto che se si da in pasto a "scanf" una stringa multiparola (come ad esempio "Ciao Mondo", composta da 2 parole ) al primo spazio ci piazza un bel '\0' e tanti saluti!! Insomma , il mio "Ciao Mondo" diventa solo un "Ciao" .
A me sembra una grossa limitazione sinceramente!!
Ho cercato una funzione alternativa, e ho trovato "gets", ma gcc mi invia un inquietante messaggio alla compilazione :
melchior@melchior:~/Cprograms$ gcc -g stack.c -o stack
/tmp/ccJzP4My.o(.text+0x3e): In function `main':
/home/melchior/Cprograms/stack.c:21: warning: the `gets' function is dangerous and should not be used.
Penso perchè "gets" non fa il controllo dell' overflow e cerca di andare avanti a scrivere anche quando non c'è + memoria allocata (correggetemi se sbaglio) .
A questo punto come faccio a prendere in input una stringa multiparola?? Datemi un consiglio .
Grazie
Ciao