Autor
|
Tema: Sacar con scanf() todo el contenido del buffer del teclado.- (Leído 7,704 veces)
|
DanielC
Desconectado
Mensajes: 4
|
Hola a todos.- Este es mi primer post y como me aburren las presentaciones les dejo algunos datos que pueden interesar a la hora de ayudarme.- Tengo 58 años y estudio con un manual de deitel & deitel y aprendo con la ayuda invalorable de los foros.- Bueno al grano, les dejo mi código para que me digan como puedo hacer para salir del bucle, probe de muchas manera pero como desconozco lo que leerá scanf() cuando encuentra el buffer vacio no se que poner para finalizar el while().- #include <stdio.h> #include <stdlib.h>
int main(void) { char frase[20]; printf("\n\tIngrese una frase con espacios...:");
while(1) { scanf("%s",frase); printf("\n\t%s\n\t",frase); }
return 0; } Espero que me den la respuesta o alguna sugerencia de como solucionar esto.- Saludos. Daniel
|
|
|
En línea
|
Abraza las cosas y personas malas como si fueran tu mas preciada joya, Son tus mas grandes maestros de paciencia sabiduría y amor y cuando lo abrazas dejan de causar dolor.-
|
|
|
|
DanielC
Desconectado
Mensajes: 4
|
Hola SirLanceCC Que ilusión me diste, sali disparado a probar tu código pero vaya sorpresa igual no sale del bucle.-
Seguiremos investigando.-
Un gran saludo y gracias por tu tiempo.-
Lenguaje C - Windows XP - Code::Blocks
|
|
|
En línea
|
Abraza las cosas y personas malas como si fueran tu mas preciada joya, Son tus mas grandes maestros de paciencia sabiduría y amor y cuando lo abrazas dejan de causar dolor.-
|
|
|
Darioxhcx
Desconectado
Mensajes: 2.294
|
si usas gets ?
|
|
|
En línea
|
|
|
|
DanielC
Desconectado
Mensajes: 4
|
Hola Gracias por tu sugerencia pero para el caso usaría fgets(cadena, maximo, stdin); Que me parece perfecta, lo que pasa es que quiero hacerlo con scanf para aprender algo nuevo.- Saludos. Daniel
|
|
|
En línea
|
Abraza las cosas y personas malas como si fueran tu mas preciada joya, Son tus mas grandes maestros de paciencia sabiduría y amor y cuando lo abrazas dejan de causar dolor.-
|
|
|
leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
Desconectado
Mensajes: 3.069
/^$/
|
Puedes usar: #include <stdio.h> int main(void) { char buffer[100]; scanf("%100[^\n]", buffer ); printf("Cadena : [%s]\n", buffer ); return 0; }
|
|
|
En línea
|
|
|
|
SirLanceCC
|
cierto... es que scanf tiene comportamientos que pueden parecer extraños. Por ejemplo ignora todos los espacios en blanco y saltos de linea antes de leer algo. El codigo que te puse, funcionaría para leer puros números por ejemplo y cuando alguien ingrese algo que no sea reconocido como tal, terminará el ciclo. También si la entrada estándar la diriges desde un archivo debería funcionar (según yo). me refiero a cuando lo ejecutas así. programa.exe < mientrada.txt
|
|
|
En línea
|
|
|
|
Eternal Idol
Kernel coder
Moderador
Desconectado
Mensajes: 5.969
Israel nunca torturó niños, ni lo volverá a hacer.
|
Lo mejor es NO usar scanf NUNCA, si es para una cadena es preferible solo fgets y si es para leer otras cosas fgets + sscanf.
|
|
|
En línea
|
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste. Juan Domingo Perón
|
|
|
Garfield07
Desconectado
Mensajes: 1.121
¡Este año voy a por todas! JMJ 2011
|
Yo estoy de acuerdo con Eternal Idol, pues a mi scanf me ha dado muxos problemas. Antes tambien usaba scanf, y gets, pero es mejor fgets....
Saludos
|
|
|
En línea
|
* Quiero cambiar el mundo, pero estoy seguro de que no me darían el código fuente. * No estoy tratando de destruir a Microsoft. Ese será tan solo un efecto colateral no intencionado. * Si compila esta bien, si arranca es perfecto. ¡Wiki elhacker.net!Un saludo
|
|
|
DanielC
Desconectado
Mensajes: 4
|
Hola a todos. Estoy anonadado apabullado con tantas respuestas, muchas pero muchas gracias a todos por intentar resolver mi problema.- Lo de Leo Gutiérrez. también lo tenia y funciona muy bien.- Solo les pido un esfuercito mas, alguien debe saber que devuelve scanf cuando encuentra el buffer vacio, con eso lo pondría como condición para finalizar el bucle y estaría todo resuelto(algo,algo,algo debe ser).-
Bueno un gran saludo y continuare con el tema, si lo resuelvo yo lo posteo.-
Saludos. Daniel
|
|
|
En línea
|
Abraza las cosas y personas malas como si fueran tu mas preciada joya, Son tus mas grandes maestros de paciencia sabiduría y amor y cuando lo abrazas dejan de causar dolor.-
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
[SOLUCIONADO]Sacar datos de contenido web
.NET (C#, VB.NET, ASP)
|
.:Weeds:.
|
4
|
3,685
|
26 Mayo 2011, 01:06 am
por .:Weeds:.
|
|
|
scanf no lee vacío desde teclado?
Programación C/C++
|
flacc
|
7
|
6,094
|
8 Septiembre 2012, 14:09 pm
por leosansan
|
|
|
Ver todo el contenido de dll y exe
Dudas Generales
|
d3xf4ult
|
3
|
7,903
|
23 Enero 2013, 23:57 pm
por MCKSys Argentina
|
|
|
Limpieza de buffer de teclado en lenguaje C.
« 1 2 »
Programación C/C++
|
NOB2014
|
16
|
11,481
|
20 Enero 2014, 23:37 pm
por leosansan
|
|
|
funcion limpiar buffer de teclado
Programación C/C++
|
Locura_23
|
8
|
10,370
|
15 Octubre 2021, 23:57 pm
por RayR
|
|