I appreciate the answers but it didn’t work with me, I use linux, I tried to adapt, but still the result didn’t come out as intended.
I got it fixed, I adapted it from this code and the @carlosfigueira code, analyzing the link code you can see that there is a problem in it as i
increases.
So I had to understand the workings of a printf
, the \r
and only in this way could I formulate a solution.
The solution is this:
#include <stdio.h>
#include <time.h>
void limpa_linha(void);
int main (int argc, char **argv){
int i, j;
system ("clear");//limpa tela
printf ("\n\nCarregando: \n\n");
for (i = 0; i <= 100; i++){
printf ("%d%% ", i);
fflush (stdout);//garante a escrita de dados imediatamente na tela
//repare mod 10, eu limito a qtd de pontos q serao gerados
for (j = 0; j < i%10; j++){
printf(".");
}
fflush (stdout);//garante a escrita de dados imediatamente na tela
usleep(500000);//função espera por tempo, parametro em microsegundos.
limpa_linha();
}
printf ("\n\n Fim\n\n");
return 0;
}
void limpa_linha(){
int i;//indice do caracter na linha
int max_caracter=50;//indica o maximo de caracter que a linha pode chegar a ter, para linhas com mt texto, coloque um nmr bem maior
printf("\r");//retorna para o inicio da linha que pretende reutilizar, isso não limpa a linha, apenas posiciona cursor ao inicio da linha
//Agora precisamos limpar a linha,
//substitui todos os caracteres existentes por espaço em branco
for(i=0;i<max_caracter;i++){
printf(" ");//vai preenchendo a linha com espaços em branco
}
printf("\r");//volta ao inicio da linha , dessa vez ela está em branco.
}
Vlw your implementation helped me base myself. Thank you
– Skywalker