Título: Fgets para enteros? Publicado por: Sagrini en 23 Diciembre 2011, 11:02 am Buenas! Estaba intentando resolver una duda de un compañero sobre scanf () y he pensado... ¿cómo puedo hacer para obtener números enteros con fgets ()?
Para cadenas está muy claro: Código ¿Pero para enteros? Se puede seguir utilizando fgets ()? Código Creo que no xD. A ver, fgets () se usa para cadenas, así que tenemos que buscar otra función. Scanf no vale porque si escribes una letra se te van abajo todos los demás scanf que tengas en el programa. ¿Qué se os ocurre? Estaba pensando en formatear el resultado de fgets, pero estamos en las mismas... Título: Re: Fgets para enteros? Publicado por: Eternal Idol en 23 Diciembre 2011, 11:54 am fgets con stdin + sscanf es la solucion correcta :)
Código
Título: Re: Fgets para enteros? Publicado por: Sagrini en 23 Diciembre 2011, 12:24 pm Mmm... bastante bien. No habría una forma más... reducida de hacerlo?
Gracias! Título: Re: Fgets para enteros? Publicado por: Eternal Idol en 23 Diciembre 2011, 12:31 pm Por la consola siempre se escriben caracteres asi que a la vista o no eso hay que hacerlo (leer la cadena y pasarla a entero). Podes meter ese codigo en una funcion ... o en C++:
Código
Título: Re: Fgets para enteros? Publicado por: Sagrini en 28 Diciembre 2011, 12:48 pm Mmm... me quedo con la primera opción. Ahora, y para obtener un solo carácter? Porque fgetc () no me funciona!
Título: Re: Fgets para enteros? Publicado por: Eternal Idol en 28 Diciembre 2011, 12:55 pm http://www.cplusplus.com/reference/clibrary/cstdio/fgetc/
http://www.cplusplus.com/reference/clibrary/cstdio/getchar/ Título: Re: Fgets para enteros? Publicado por: Sagrini en 28 Diciembre 2011, 13:37 pm Al usar getchar () o fgetc () (como también scanf () y demás) se "salta" un ciclo sin esperar respuesta del usuario, lo cual me gustaría evitar. ¿Qué hago?
Código
Código: $ ./code Título: Re: Fgets para enteros? Publicado por: satu en 28 Diciembre 2011, 13:59 pm Hola
Lo que pasa es que en cada getchar() introduces un caracter y un Enter y el getchar lee sólo el carácter, entonces en el siguiente getchar() se encuentra en el búffer de entrada el '\n' por lo que "salta". Lo que debes hacer es limpiar ese búffer, eso sí, no utilices fflush. Código
Saludos Título: Re: Fgets para enteros? Publicado por: Sagrini en 28 Diciembre 2011, 17:02 pm Muy bueno! A mi se me habia ocurrido hacer:
Código pero no era nada efectivo jajaja |