PDA

Visualizza la versione completa : [c]alternativa a gets


cristianc
10-05-2008, 13:42
nel codice di un programma ho utilizzato la seguente riga:

gets(str);
per far ricevere in input una stringa

Quando ho compilato il programma ho ricevuto il seguente avviso:

menu.c:(.text+0x2ff): warning: the `gets' function is dangerous and should not be used.

C'e' un modo alternativo di prendere una stringa in input diverso da gets?

shodan
10-05-2008, 13:50
fgets con al posto di FILE*, stdin (se non ricordo male)

cristianc
10-05-2008, 13:52
non sto usando file per questo

shodan
10-05-2008, 13:56
Va usata cosė. Come detto sopra, l'ultimo parametro non č un FILE*, ma stdin.


char c[256];
memset(c,0,256);
fgets(c,256,stdin);
printf("%s\n", c);

cristianc
10-05-2008, 14:01
fgets(c,256,stdin);
E' solo questa la riga che mi serve?
Questo memset infatti non lo trovo sul libro.

Fabr
10-05-2008, 14:05
potresti anche farti un ciclo tipo



char str[512];
int j , ch ;

for( j = 0 ; ( ch = getchar () ) != '\n' ; j++ )
str [ j ] = ch ;
str [ j ] = '\0';

shodan
10-05-2008, 14:13
Originariamente inviato da cristianc

fgets(c,256,stdin);
E' solo questa la riga che mi serve?
Questo memset infatti non lo trovo sul libro.

Si. La memset č dichiarata in string.h e serve solo ad azzerare il buffer.

MItaly
10-05-2008, 14:41
La memset non č necessaria, dal momento che la fgets inserisce sempre il terminatore NUL. In ogni caso per azzerare completamente un array basta fare cosė:


char c[256]={0};
.

Loading