[PSP] Añadir indicador de porcentaje

Bueno pues tengo aski un SRC (que es original de Hermes, no lo neguemos xD) y tras modificarlo un poko kiero añadirle un indicador de tanto porcierto (%) xo no tengo ni idea de como se hace eso.. alguien me exa una mano?

Pd: Adjunto el SRC

Adjuntos

EDIT2:

Vale, ya se como imprimir los decimales que quiero, %0.f imprime 0 decimales del float.

Para imprimir el % hay que poner %%.

Solo queda que salga todo en una sola linea :p


EDIT: Vale, ya tengo lo del porcentaje, el problema era que no usaba la variable tipo float y como el int tenia decimales se hacia la picha un lio :p

El problema ahora es...como imprimo en pantalla solo el numero entero del decimal?

Y tambien, como imprimo el caracter %?

Aun mas dificil, como lo hago en una sola lineaXD (esto ya creo que requiere mas codigo)

Me recomendais convertir el float a un int antes de imprimirlo?





Eso, que yo lo maximo que he conseguido que es quesalga ciclicamente 0->1->2->-2->-1->0...

Esto es lo que puese dentro del bucle while:

printf("total realizado: %d \n", porcentaje);

total_actual = total_actual + 2352;

multiplicacion = 100 * total_actual;

porcentaje = multiplicacion / lSize;



total_actual, multiplicacion y porcentaje son variables de tipo int (aunque probe con tipo long)

En teoria en cada bucle se escribe 2352 bytes, lo demas es bastante obvio.

En printf tmb he probado con %ld (aunque ahora que lo pienso la variable porcentaje solo ha de esar entre 0 y 100)


lSize es el tamaño del archivo.

Por cierto, paketostio, a ver si te pueden cambiar el titulo, la pregunta no es de PSP, es de C normal y corriente. (asi vendra mas gente)
#include <stdio.h>
#include <stdlib.h>

char buffer[2352],nombre[255],pbp[4];

int main(int argc, char *argv[])
{
FILE *fp, *fo;
int size, sizep, r, w, sizeCo, i=0, ip=0, porcentaje, pf;


fp = fopen("EBOOT.PBP", "rb");
if(fp==0) {printf("Cannot open EBOOT.PBP\n");return -1;}
printf("Verificando PBP...\n");
fread(pbp,1,4,fp);
if (pbp[0] != 0x00) { printf("ERROR: Input file is not a PBP file.\n"); return -1; } else
  if (pbp[1] != 0x50) { printf("ERROR: Input file is not a PBP file.\n"); return -1; } else
  if (pbp[2] != 0x42) { printf("ERROR: Input file is not a PBP file.\n"); return -1; } else
  if (pbp[3] != 0x50) { printf("ERROR: Input file is not a PBP file.\n"); return -1; }

if(argc == 1) { sprintf(nombre,"cd.bin"); }
else { sprintf(nombre,"%s.bin",argv[1]); }
fo = fopen(nombre, "wb");
if(fo==0) {fclose(fp);printf("Cannot Create cd.bin\n");return -1;}

printf("PBP Ok! Writing ISO...\n");

fseek( fp,0L,SEEK_END);
size = ftell(fp);
fseek( fp,0x150000,SEEK_SET); // inicio de la ISO (formato RAW)
sizeCo = ftell(fp);
sizep = size - sizeCo;
porcentaje = sizep/235200;
pf = porcentaje;
printf("Tamaño total %d bytes\nTamaño correspondiente a la iso %d bytes\n",size,sizep);
printf("Porcentaje %f\n pf %f\n",porcentaje,pf);
while(1)
{
if( i == porcentaje ) { ip++; printf("%d%%",ip); porcentaje += pf; }
r=fread(buffer, 1,2352, fp);
if(r<2352) break;
w=fwrite(buffer, 1,2352, fo);
if(w<2352)
{
printf("Error Writing cd.bin\n");break;
}
i++;

}


fclose(fp);
fclose(fo);
printf("Iso terminada... Disfrutala! :)\n%d",i);
return 0;
}


Lo siento lo hize el otro dia y se me paso postearlo me acorde por otro hilo en FW y MODchips xD

EDIT : Bueno como puedes ver aqui el codigo esta mal desde un principio : http://www.elotrolado.net/showthread.php?s=&postid=1706387616#post1706387616
2 respuestas