Debianizzati.Org | Forum | Blog | Guide | IRC
 
 
Forum Italiano Debian - Debianizzati.Org
Novembre 22, 2008, 05:12:19 pm *
Benvenuto! Accedi o registrati.
Hai dimenticato l'e-mail di attivazione?

Accesso con nome utente, password e durata della sessione
Notizia:
 
   Indice   Aiuto Ricerca Agenda Accedi Registrati  
Pagine: [1]   Vai giù
  Stampa  
Autore Discussione: Linguaggio c: Anjuta e la funzione \"gets\"  (Letto 713 volte)
0 utenti e 1 Utente non registrato stanno visualizzando questa discussione.
Midnight
Newbie
*

Karma: +0/-0
Scollegato Scollegato

Messaggi: 31



Mostra profilo E-mail
« inserita:: Dicembre 12, 2006, 07:42:59 pm »

Salve a tutti!

Ho installato Anjuta da un pò di tempo e mi sono accorto che ogni qualvolta utilizzo la funzione gets(stringa) Anjuta compila correttamente il programma, ma nell\'esecuzione poi non utilizza questa funzione...
Quando genero il file infatti compare questo avviso:
\"Warning, the \"gets\" function is dangerious and should not be used\"
A Scuola usiamo il Dev-cpp della Bloodshed, e non ci ha mai dato questo genere di problema... Qualcuno di voi geniacci sa come fare? Sono ancora un novellino...

Grazie per l\'attenzione:)
Registrato

tindal
Administrator
Hero Member
*****

Karma: +65/-1
Scollegato Scollegato

Messaggi: 2614


Mostra profilo E-mail
« Risposta #1 inserita:: Dicembre 12, 2006, 11:03:01 pm »

neanch\'io sono un drago del C, ma mi sono imbattuto proprio ieri nella funziona gets Tongue

dal progetto gnu suggeriscono molto caldamente di usare fgets al suo posto, perchè gets non ha il minimo controllo sulla dimensione della stringa che prende in input, e non è possibile impedire a priori di mandarla in overflow

per ottenere il medesimo comportamento di una chiamata tipo
Codice:

char *line[100]
  gets(line)

puoi usare
Codice:

char *line[101]
int n = 100
   fgets(line, n, stdin)


n è il fattore limitante, e devi definirlo di 1 più piccolo rispetto a line, perchè fgets include il \"\\n\" (sarebbe il \"newline\", ma joomla mi sopprime il backslash Sad) di fine riga e aggiunge un NULL in fondo al tutto, mentre gets mette solo il NULL.

dopo n caratteri, qualunque stringa ci sia in input viene letta la volta dopo

io devo leggere un file dallo stdin riga per riga, e alla fine ho usato getline, che è ancora più avanzata: non può andare in overflow perchè allarga il buffer a seconda della stringa che trova B)

è un poco più complessa da usare, ma non di molto:
http://www.crasseux.com/books/ctutorial/getline.html

ciao
tindal

Post modificato da: tindal, alle: 2006/12/12 16:07
Registrato

Se ci sono molti modi diversi per fare una certa cosa, ed uno di questi ha conseguenze disastrose, di sicuro qualcuno la farà in quel modo.
Pagine: [1]   Vai su
  Stampa  
 
Vai a:  

Altri Topic Correlati
Oggetto Aperta da Risposte Visite Ultimo messaggio
dhcp client "non funzionante" se cavo di rete disconnesso al boot Network barlafuss 8 548 Ultimo messaggio Aprile 25, 2007, 11:47:11 pm
da DrBrex
Fare un Firewall, Transparent Proxy, in una "rete" fastweb con debian Generale Nokao 3 327 Ultimo messaggio Maggio 30, 2007, 09:23:50 am
da tindal
scaricare vari video ""streaming" Multimedia ispanico 9 448 Ultimo messaggio Novembre 17, 2008, 10:19:30 am
da LoriX
Amule CVS: "ServerUDP: Sources received for unknown file" [RISOLTO] Generale Riccardo 9 1980 Ultimo messaggio Novembre 22, 2007, 03:05:08 pm
da Riccardo
Debian Etch con punte di Lenny, via "pinning" ...o "aptitude"-way Installazione mrx65 12 1204 Ultimo messaggio Maggio 03, 2008, 05:13:14 pm
da Brunitika
Powered by MySQL Powered by PHP Powered by SMF 1.1.7 | SMF © 2006-2008, Simple Machines LLC XHTML 1.0 valido! CSS valido!
Pagina creata in 0.077 secondi con 19 interrogazioni al database.