gcc 4.4.2Usando scanf para aceptar la entrada del usuario
Estaba leyendo un artículo sobre scanf. Personalmente, nunca revisé el código de retorno de un scanf.
#include <stdio.h>
int main(void)
{
char buf[64];
if(1 == scanf("%63s", buf))
{
printf("Hello %s\n", buf);
}
else
{
fprintf(stderr, "Input error.\n");
}
return 0;
}
Me pregunto qué otras técnicas experimentan los programadores cuando utilizan scanf cuando quieren obtener la entrada del usuario? ¿O usan otra función o escriben la suya?
Gracias por cualquier sugerencia,
EDITAR =========
#include <stdio.h>
int main(void)
{
char input_buf[64] = {0};
char data[64] = {0};
printf("Enter something: ");
while(fgets(input_buf, sizeof(input_buf), stdin) == NULL)
{
/* parse the input entered */
sscanf(input_buf, "%s", data);
}
printf("Input [ %s ]\n", data);
return 0;
}
creo que la mayoría de los programadores de acuerdo en que scanf es malo, y la mayoría están de acuerdo en usar fgets y sscanf. Sin embargo, puedo usar los fgets para leer la entrada. Sin embargo, si no sé en qué ingresará el usuario, ¿cómo puedo saber qué analizar? Por ejemplo, ¿como si el usuario ingresara su dirección que contendría números y caracteres y en cualquier orden?
Nunca verificando el código de retorno de cualquiera de las rutinas de entrada siempre es dudoso en extremo, debe ser afortunado. La respuesta corta es "No uso' scanf() 'o' fscanf() '; de vez en cuando uso' sscanf() 'pero pisa con cautela". –
Después de actualizar mi respuesta. ¿Cómo usaría normalmente sscanf para analizar los datos? Si no está seguro de qué datos va a ingresar el usuario? Gracias. – ant2009