zaire90 (Normal User)
Rookie
Messaggi: 46
Iscritto: 16/10/2009
|
Salve a tutti, ho scritto questo semplicissimo codice per leggere da tastiera una stringa di caratteri con gets:
Codice sorgente - presumibilmente C/C++ |
# include <stdio.h>
# include <string.h>
int main(void)
{
char str[80];
gets(str);
printf("\nlunghezza stringa %d",strlen(str));
return 0;
}
|
e colpilandolo mi da questo messaggio! :
Codice sorgente - presumibilmente VB.NET |
zaire90@zaire90-laptop:~/Documenti/Desktop$ gcc ciao.cpp -o a /tmp/ccqBekgp.o: In function `main': ciao.cpp:(.text+0x1d): warning: the `gets' function is dangerous and should not be used. /tmp/ccqBekgp.o:(.eh_frame+0x12): undefined reference to `__gxx_personality_v0' collect2: ld returned 1 exit status zaire90@zaire90-laptop:~/Documenti/Desktop$
|
Come lo devo usare gets() ??? |
|
nessuno (Normal User)
Guru^2
Messaggi: 6390
Iscritto: 03/01/2010
|
Quel warning ti indica che la gets non è raccomandabile perché può essere causa di buffer overflow.
Puoi usare al suo posto la fgets
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità. |
|
zaire90 (Normal User)
Rookie
Messaggi: 46
Iscritto: 16/10/2009
|
Ho capito...ma non c'è cmq un modo di usarla lo stesso??
Cioè questo messaggio di errore dipende dal mio compilatore, dal pc o quant'altro?...perchè in fondo un programmino uguale a questo sta su tutti i libri di programmazione dove si spiega l'uso della gets()...
|
|
nessuno (Normal User)
Guru^2
Messaggi: 6390
Iscritto: 03/01/2010
|
Certo che puoi usarla ... infatti hai solo un warning non un errore.
L'altro errore non c'entra con la gets.
Usa g++
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità. |
|
zaire90 (Normal User)
Rookie
Messaggi: 46
Iscritto: 16/10/2009
|
Già avevo provato con g++, ma non funziona lo stesso! Il messaggio c'è sempre, guarda:
Codice sorgente - presumibilmente Delphi |
zaire90@zaire90-laptop:~/Documenti/Desktop$ g++ ciao.cpp -o a /tmp/ccrknvyH.o: In function `main': ciao.cpp:(.text+0x1d): warning: the `gets' function is dangerous and should not be used. zaire90@zaire90-laptop:~/Documenti/Desktop$
|
|
|
zaire90 (Normal User)
Rookie
Messaggi: 46
Iscritto: 16/10/2009
|
Cioè in sostanza sto cercando di poter immettere una stringa di caratteri come "ciao come stai?", con degli spazi e non riesco a farlo. Usando gets() non funziona, usando scanf() non va bene perchè legge solo fino al primo spazio...e inoltre non volevo usare getchar() facendo un while finchè non si preme invio.
Vorrei poter usare gets()!
|
|
Nullable (Normal User)
Expert
Messaggi: 217
Iscritto: 12/07/2011
|
Postato originariamente da zaire90:
Vorrei poter usare gets()! |
...usa fgets() come ti ha suggerito prima nessuno. |
|
nessuno (Normal User)
Guru^2
Messaggi: 6390
Iscritto: 03/01/2010
|
Non ci siamo capiti ... g++ serve per evitare l'errore non il warning.
Anche se hai il warning dovresti avere il file eseguibile disponibile.
In ogni caso NON CAPISCO perché si devono fare 10 post per seguire un consiglio.
USA LA fgets !
Ultima modifica effettuata da nessuno il 17/12/2011 alle 17:23
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità. |
|
zaire90 (Normal User)
Rookie
Messaggi: 46
Iscritto: 16/10/2009
|
A parte il fatto che fgets() non lo so usare...sto provando a capire come funziona ma i programmi mi danno solo errori (se magari qualcuno mi scrivesse un esempio semplice semplice gliene sarei molto grato!)
...e poi cmq ho capito che potrei usare fgets(), ma io vorrei riuscire ad usare gets()! E' possibile usarlo o no!?!
|
|