Zdravím,
programuju editor wav souborů a když se provádí např. rozdělení souboru na 2, tak bych chtěl vypisovat něco ve stylu:
Probiha vytvareni prvni casti.
100% dokonceno.
Probiha vytvareni druhe casti.
25% dokonceno.
Problém je, že tohle vypisování drasticky zpomaluje proces. Když tam to vypisování není, tak je procesor s programem za pár sekund vypořádán, ale když je, tak to trvá minutu. Dotaz tedy zní, jde to udělat tak, aby to vypisovalo %, ale nezpomaloval se samotný proces?
Teď to vypadá takto:
// zapsani dat do fw1
fseek(fr, 4, SEEK_CUR);
printf("Probiha vytvareni prvni casti.\n");
for (i = 0; i < vzorky_fw1; i++) {
printf("%d%% dokonceno.\r", i * 100 / vzorky_fw1);
if (i == vzorky_fw1 - 1) {
printf("100%% dokonceno.\n");
}
if (fread(&buffer, 1, 1, fr) != 1) {
return CHYBA_READ;
}
if (fwrite(&buffer, 1, 1, fw1) != 1) {
return CHYBA_WRITE;
}
}
// zapsani dat do fw2
printf("Probiha vytvareni druhe casti.\n");
for (i = 0; i < vzorky_fw2; i++) {
printf("%d%% dokonceno.\r", i * 100 / vzorky_fw2);
if (i == vzorky_fw2 - 1) {
printf("100%% dokonceno.\n");
}
if (fread(&buffer, 1, 1, fr) != 1) {
return CHYBA_READ;
}
if (fwrite(&buffer, 1, 1, fw2) != 1) {
return CHYBA_WRITE;
}
}
Díky za odpovědi,
s pozdravem,
Tomáš.
P. S. - špatné odsazení je způsobeno zkopírováním, jinak je to v pořádku.