Oppure

Loading
17/12/11 14:11
zaire90
Salve a tutti, ho scritto questo semplicissimo codice per leggere da tastiera una stringa di caratteri con gets:

# 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! :
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() ???
aaa
17/12/11 14:15
Quel warning ti indica che la gets non è raccomandabile perché può essere causa di buffer overflow.

Puoi usare al suo posto la fgets
17/12/11 14:24
zaire90
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()...
aaa
17/12/11 14:29
Certo che puoi usarla ... infatti hai solo un warning non un errore.

L'altro errore non c'entra con la gets.

Usa g++
17/12/11 14:34
zaire90
Già avevo provato con g++, ma non funziona lo stesso! Il messaggio c'è sempre, guarda:

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$ 

aaa
17/12/11 14:41
zaire90
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()!
aaa
17/12/11 15:56
Nullable
Postato originariamente da zaire90:

Vorrei poter usare gets()!


...usa fgets() come ti ha suggerito prima nessuno.
aaa
17/12/11 16:21
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 17/12/11 16:23