[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: [OT] Programacion en c, scanf con espacios en blanco



Ya te respondieron.... Pero recuerda que el Scanf no es tan apropiado
cuando uno lee datos de humanos :)

Atte,
Nelson.-

Es cierto que scanf no es muy recomendable para recibir datos no
fiables. Una forma fácil de securizarlo un poco es limitar el número
de caracteres máximos que acepta. Por ejemplo, si usas un buffer de 50
caracteres para guardar la entrada, deberias hacer algo que así:
char s[50];
scanf("%49[^\n]",s);
El número despues de '%' indica la cantidad máxima de caracteres que
leerá. Se puede poner con cualquier parámetro (con la  's' de string,
por ejemplo) y es recomendable ponerlo para evitarte buffer
overflow's.
En el ejemplo, si escribes más de 49 caractéres, el resto se quedan en
el buffer de entrada (aparecerán la siguiente vez que llames a scanf).
Pongo uno menos, para dejar sitio para el \0 en el array.

Reply to: