elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  como puedo imprimir con printf sin que se repita tanto por while?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: como puedo imprimir con printf sin que se repita tanto por while?  (Leído 4,611 veces)
Belial & Grimoire


Desconectado Desconectado

Mensajes: 559


Tea_Madhatter


Ver Perfil
como puedo imprimir con printf sin que se repita tanto por while?
« en: 13 Mayo 2013, 04:33 am »

hola

alguien sabe como podria hacer para que un programa, al hacer la transferencia de archivos, me marque una cantidad sin repetir todo el printf varias veces por while

por ejemplo

Código
  1. while(i < tam){
  2.  
  3. leido = fread(bu, sizeof(char), 256, fb);
  4. envio = send(newfd, bu, leido, 0);
  5. i = i + leido;
  6. printf("Enviando-- %ld bytes\n", i);
  7. }


si hago esto me aparece

Código:
Enviando-- 3753472 bytes
Enviando-- 3753728 bytes
Enviando-- 3753984 bytes
Enviando-- 3754240 bytes
Enviando-- 3754496 bytes
Enviando-- 3754752 bytes
Enviando-- 3755008 bytes
Enviando-- 3755264 bytes
Enviando-- 3755520 bytes
Enviando-- 3755776 bytes
Enviando-- 3756032 bytes
Enviando-- 3756288 bytes
Enviando-- 3756544 bytes
Enviando-- 3756800 bytes
Enviando-- 3757056 bytes
Enviando-- 3757312 bytes


pero me gustaria que no se moviera, que aparezca estatico y solo se vaya aumentando los numeros poco a poco

Código:
Enviando-- 3753472 bytes


alguien tiene alguna idea de como podria hacer para que solo aumente la cantidad y no se repita tanto el printf como arriba?, porque me gustaria poner un porcentaje y la cantidad exacta algo asi

Código:
Enviando-- 2%   3753472 / 74021921bytes


EDITADO

P.D. lo estoy haciendo en linux

salu2


« Última modificación: 13 Mayo 2013, 19:22 pm por Belial & Grimoire » En línea

.                                 
capsulasinformaticas

Desconectado Desconectado

Mensajes: 15



Ver Perfil
Re: como puedo imprimir con printf sin que se repita tanto por while?
« Respuesta #1 en: 13 Mayo 2013, 06:40 am »

Si lo quieres hacer estandar, saca el '\n' al final de la cadena y pon un '\r' al principio, con eso deberia bastar.


« Última modificación: 6 Septiembre 2013, 22:58 pm por capsulasinformaticas » En línea

Luna71c0


Desconectado Desconectado

Mensajes: 541


El lado oscuro de la luna...


Ver Perfil
Re: como puedo imprimir con printf sin que se repita tanto por while?
« Respuesta #2 en: 13 Mayo 2013, 07:26 am »

Si piensa hacer una aplicación de consola porque no simplemente borras la pantalla ?

por cierto es "envio", no "enbio" :P
En línea


Citar
Un pequeño paso para el programador....
Un gran paso para el hacker...

...]LunaHAck[...


i'm the "Luna71c0"
capsulasinformaticas

Desconectado Desconectado

Mensajes: 15



Ver Perfil
Re: como puedo imprimir con printf sin que se repita tanto por while?
« Respuesta #3 en: 13 Mayo 2013, 07:52 am »

Si piensa hacer una aplicación de consola porque no simplemente borras la pantalla ?

por cierto es "envio", no "enbio" :P

Bueno tambien esta esa opcion pero me gusta mas lo estandar xD, si lo quieres hacer con un limpiado de pantalla puedes hacer cout << "\E[H\E[2J"; en Linux (o sistemas Unix), o system("cls"); en Windows.

Pd: Creo que para system("cls"); es necesario la libreria ctdlib o stdlib.h, no estoy seguro.
« Última modificación: 13 Mayo 2013, 07:54 am por capsulasinformaticas » En línea

0xDani


Desconectado Desconectado

Mensajes: 1.077



Ver Perfil
Re: como puedo imprimir con printf sin que se repita tanto por while?
« Respuesta #4 en: 13 Mayo 2013, 16:39 pm »

Pues borras la pantalla en cada iteración del bucle, la forma rápida es esta:

Código
  1. system("clear");

La forma elegante, no sé ahora mismo, pero supongo que pasaría por usar termios o ioctl.

Y en cuanto al porcentaje:

Obtienes el tamaño del archivo, y con eso haces el porcentaje, luego lo muestras por pantalla.

Saludos.
En línea

I keep searching for something that I never seem to find, but maybe I won't, because I left it all behind!

I code for $$$
Hago trabajos en C/C++
Contactar por PM
Belial & Grimoire


Desconectado Desconectado

Mensajes: 559


Tea_Madhatter


Ver Perfil
Re: como puedo imprimir con printf sin que se repita tanto por while?
« Respuesta #5 en: 13 Mayo 2013, 19:21 pm »

hola

gracias por las respuestas

hice lo de system()... pero no gusto como se limpia toda la pantalla...

Citar
Luna71c0

jajaja cierto... lo puse con "b"  :P, corregido

lo intente con "\r" y le agregue fflush(stdout) y funciono... se queda statico... a veces parpadea pero bueno, no creo que importe mucho..

gracias de nuevo

En línea

.                                 
mr.blood

Desconectado Desconectado

Mensajes: 150


Ver Perfil
Re: como puedo imprimir con printf sin que se repita tanto por while?
« Respuesta #6 en: 13 Mayo 2013, 19:34 pm »

hola

gracias por las respuestas

hice lo de system()... pero no gusto como se limpia toda la pantalla...

lo intente con "\r" y le agregue fflush(stdout) y funciono... se queda statico... a veces parpadea pero bueno, no creo que importe mucho..

gracias de nuevo



Nunca se deja de aprender ;). Muy  buen tip.

Sa1uDoS
En línea

WHK
Moderador Global
***
Desconectado Desconectado

Mensajes: 6.605


Sin conocimiento no hay espíritu


Ver Perfil WWW
Re: como puedo imprimir con printf sin que se repita tanto por while?
« Respuesta #7 en: 13 Mayo 2013, 20:11 pm »

saca la longitud de carácteres del valor del porcentaje y luego lo vas borrando con \b, es mucho mas efectivo porque no necesitas borrar la linea completa y no parpadea todo el texto, solo se borra el valor, la consola redenderiza mas rápido, por lo tanto tu aplicación también se vuelve mas rápida.

Por ejemplo
\b1
\b2
\b3
\b10
\b\b11
\b\b12
\b\b50
\b\b100

Y funciona en todos los sistemas operativos siempre y cuando uses printf.
« Última modificación: 13 Mayo 2013, 20:13 pm por WHK » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
ayuda con un numero que se repita
Programación C/C++
daniel010 2 2,487 Último mensaje 13 Septiembre 2013, 03:02 am
por GenR_18
Así es como Microsoft quiere que su navegador Edge no repita los errores de ...
Noticias
wolfbcn 0 1,525 Último mensaje 18 Junio 2015, 14:46 pm
por wolfbcn
[Resuelto] Como hacer una alerta que se repita?
Desarrollo Web
Robocop8 3 2,856 Último mensaje 11 Agosto 2017, 12:17 pm
por ivancea96
Imprimir salida comando con PRINTF (BASH)
Scripting
Eskizoide 2 2,623 Último mensaje 27 Noviembre 2017, 14:56 pm
por Eskizoide
Como puedo utilizar un numero random en un bucle sin que se repita?(cs)
.NET (C#, VB.NET, ASP)
Reent 2 2,789 Último mensaje 27 Julio 2019, 05:19 am
por WHK
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines