Título: duda con un micro codigo.... Publicado por: engel lex en 25 Junio 2013, 01:12 am tengo
Código
lo compilo en netbeans con cygwin (por eso el cmd.exd en system) lo lógico es que la salida sea Código: texto para entrada: a pero la salida real es Código: texto para entrada: a mi duda es: ¿por qué muestra el "fin" despues del system si se llama antes? Título: Re: duda con un micro codigo.... Publicado por: BlackZeroX en 25 Junio 2013, 01:18 am Usa fflush(stdout) así:
Código
Si no ocupas parametros usa puts(); Código
o termina la cadena con un salto de linea Código
Dulces Lunas!¡. Título: Re: duda con un micro codigo.... Publicado por: MeCraniDOS en 25 Junio 2013, 01:25 am Y ese código no te da errores...?
Prueba con este: Código
Saludos Título: Re: duda con un micro codigo.... Publicado por: engel lex en 25 Junio 2013, 01:34 am no, no me entendieron...
lo que estoy no es pidiendo ayuda para hacer el codigo... es solo ese codigo... quiero responder una simple y única pregunta... ¿por qué con el código declarado por mi previamente me imprime el system antes que la salida? y bueno, agregaré otra pregunta... ¿si uds corren ese código, les pasa lo mismo? (por cierto, tiene un error el buff es [2] no [1] por la condicion "s" del scanf) Título: Re: duda con un micro codigo.... Publicado por: MeCraniDOS en 25 Junio 2013, 01:43 am no, no me entendieron... lo que estoy no es pidiendo ayuda para hacer el código... es solo ese código... quiero responder una simple y única pregunta... ¿por qué con el código declarado por mi previamente me imprime el system antes que la salida? y bueno, agregaré otra pregunta... ¿si uds corren ese código, les pasa lo mismo? (por cierto, tiene un error el buff es [2] no [1] por la condicion "s" del scanf) Si corro tu código me saltan algunos errores 1.- En tu código no declaras las dos funciones, por lo que no las reconoce 2.- La función "printf" pertenece a <stdio.h>, por lo que <iostream> y <stdlib.h> no hacen falta 3.- Estas declarando una variable global (no es error, pero deberías tener cuidado con las variables globales) Tu código a mi no me compila, he probado con el mio y funciona perfectamente, la salida que me da es esta: Citar texto para entrada: a fin Espero que te ayude Saludos Título: Re: duda con un micro codigo.... Publicado por: engel lex en 25 Junio 2013, 01:52 am MeCraniDOS: que compilador usas?
Citar 1.- En tu código no declaras las dos funciones, por lo que no las reconoce 2.- La función "printf" pertenece a <stdio.h>, por lo que <iostream> y <stdlib.h> no hacen falta 3.- Estas declarando una variable global (no es error, pero deberías tener cuidado con las variables globales) 1- no las declaro porque las metí antes del main 2- las otras 2 librerias es porque el codigo es más largo, pero vi eso y recorté el código para ver eso y no saqué las otras 2 librerias por cierto... a mi me corren con <iostream> no con <stdlib.h> si quito stdlib da igual... si quito iostream ni si quierta compila XD 3- esa variable es un simple buffer que metí a los golpes por meter XD está bien... aqui el codigo arreglado... Código
la salida sigue siendo Código: letra para entrada: a Título: Re: duda con un micro codigo.... Publicado por: BlackZeroX en 25 Junio 2013, 02:01 am no, no me entendieron... lo que estoy no es pidiendo ayuda para hacer el codigo... es solo ese codigo... quiero responder una simple y única pregunta... ¿por qué con el código declarado por mi previamente me imprime el system antes que la salida? y bueno, agregaré otra pregunta... ¿si uds corren ese código, les pasa lo mismo? (por cierto, tiene un error el buff es [2] no [1] por la condicion "s" del scanf) Cuando tu quieres mostrar una cadena o caracter "X" este se plasma en un archivo llamado stdout (funciones como puts() y printf() usan este archivo de manera interna) y solo se muestra dicho texto en la terminal en un momento dado uno de esos momentos son: Cuando se tiene un salto de linea Cuando se usa fflush(stdout); fflush(stdout) obliga a mostrar el contenido de stdout en la terminal y por ende vaciar stdout. Algún otro que fuerce su visualización. * Cuando se visualiza el contenido se "limpia". Un caso similar en con el archivo stdin que sirve para almacenar lo que se a introducido a la computadora (teclado) y permite obtener y vaciar en cada consulta, gracias a ello existe getchar(). Existe un tercer archivo llamado stderr() que es similar a stdout solo que es orientado a mostrar cadenas errores que a nosotros puede servirnos en la depuración de un programa. Estos 3 archivos son de tipo FILE*. Dulces Lunas!¡. Título: Re: duda con un micro codigo.... Publicado por: engel lex en 25 Junio 2013, 02:03 am BlackZeroX (Astaroth)
respuesta perfecta con todo lo que necesitaba saber! eso ayuda bastante! de todas formas no espero sino usar cout y cin pero el conocimiento no sobra Título: Re: duda con un micro codigo.... Publicado por: BlackZeroX en 25 Junio 2013, 02:06 am Agrego.
<iostream> es de C++ si usas este mejor usa cout, cin y cerr para tus propositos. http://www.cplusplus.com/reference/istream/iostream/?kw=iostream http://www.cplusplus.com/reference/istream/ Con cout, cin y cerr para algo similar cout tiene su miembro flush(). Existe uno cuarto llamado clog. Todo lo que era de ostream tiene su miembro fflush (cout, cerr y clog) (http://www.cplusplus.com/img/iostream.gif) Fuente: http://www.cplusplus.com/reference/ios/ Dulces Lunas!¡. Título: Re: duda con un micro codigo.... Publicado por: rir3760 en 25 Junio 2013, 02:18 am Una ventaja de utilizar cout y cin es la sincronización de estos: si se utiliza cout para enviar un texto a la salida estándar y a continuación se utiliza cin el bufer del primero se vacía automáticamente.
Un saludo Título: Re: duda con un micro codigo.... Publicado por: MeCraniDOS en 25 Junio 2013, 10:40 am MeCraniDOS: que compilador usas? Uso CodeBlocks con MinGW Saludos Editado Si de la manera en que lo pones te falla, puedes hacerlo también de esta manera, aunque no es la mejor, quizás te funciona... :-\ Con tu código quedaría así: Código
Y con mi código quedaría así: Código
Título: Re: duda con un micro codigo.... Publicado por: amchacon en 25 Junio 2013, 11:23 am No se debe usar fflush(stdin); es una mala práctica.
Por cierto para la pausa: Código Aunque yo personalmente: Código Título: Re: duda con un micro codigo.... Publicado por: engel lex en 25 Junio 2013, 15:09 pm Citar No se debe usar fflush(stdin); es una mala práctica. Por cierto para la pausa: Código system("PAUSE"); Aunque yo personalmente: Código puts("Pulse enter para salir"); getchar(); 1- Por que fflush es una mala practica? 2- no uso system pause por el compilador, ya eso lo dije... Título: Re: duda con un micro codigo.... Publicado por: daryo en 25 Junio 2013, 15:26 pm 1. no es estandar fflush stdin lo que se suele usar es flush stdout
2. getchar te corre en cualquier compilador y a todas estas te recomiendo usar mingw como compilador y no cygwin Título: Re: duda con un micro codigo.... Publicado por: amchacon en 25 Junio 2013, 15:56 pm 1- Por que fflush es una mala practica? fflush espera un flujo de salida pero stdin es un flujo de entrada (el teclado).Puede funcionar en determinados sistemas operativos y en determinados compiladores, pero su comportamiento no está definido ni asegurado. 2- no uso system pause por el compilador, ya eso lo dije... system hace una llamada al sistema, eso es independiente del compilador. |