Thanks for the answers but it did not work for me, I use linux, I tried to adapt them, but the result did not work out as I intended.
I was able to solve it, I adapted it from the code and the code for @carlosfigueira , by analyzing the code of the link you can see that there is a problem in it as i
increases.
Then I had to understand the operation of a parameter of printf
, \r
and only then 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.
}