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
while(i < tam){
leido = fread(bu, sizeof(char), 256, fb);
envio = send(newfd, bu, leido, 0);
i = i + leido;
printf("Enviando-- %ld bytes\n", i);
}
si hago esto me aparece
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
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
Enviando-- 2% 3753472 / 74021921bytes
EDITADO
P.D. lo estoy haciendo en linux
salu2
Si lo quieres hacer estandar, saca el '\n' al final de la cadena y pon un '\r' al principio, con eso deberia bastar.
Si piensa hacer una aplicación de consola porque no simplemente borras la pantalla ?
por cierto es "envio", no "enbio" :P
Cita de: Luna71c0 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
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.
Pues borras la pantalla en cada iteración del bucle, la forma rápida es esta:
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.
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
Cita de: Belial & Grimoire 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...
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
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.