Je souhaite que mon programme affiche l'éolienne unix pendant le traitement. Il y a une boucle et à chaque itération Theres une fonction printf:Comportement étrange de stdout en C++
printf("Fetching articles (%c)\r",q);
q est l'un des personnages dans le moulin à vent (- \ | /) en fonction du nombre d'itérations. Le problème est - il semble que dans 100 itérations, il n'y a que deux changements dans la ligne affichée, et chaque itération prend environ une seconde pour terminer.
Quel pourrait être l'aouse pour cela?
est ici la boucle entière avec seulement deux caractères possibles pour le moulin à vent:
for (int i=0;i<numb_articles;i++) {
memset(file_path,0x0,BUFF_SIZE);
url=article_urls[i];
if (rules->print!=NO_PRINT) {
url=modify_url(url,rules->printout,rules->print);
if (url=="NULL")
continue;
}
get_page(url,file_content);
if (strcmp(rules->save.data(),"NULL")!=0)
if (!check_save(rules->save,file_content,url))
continue;
at_least_one_saved=true;
numb_articles_accepted++;
encoding_list[i]=get_encoding(file_content);
title=get_title(file_content,err_msg);
if (title=="")
continue;
title_list[i]=strdup(title.data());
filename=get_filename(title);
int count=numb_fn_found(filename_list,i,filename.data());
char *tmp = new char[10];
if (count>0) {
sprintf(tmp,"(%d)",count);
filename.insert((size_t)filename.length(),tmp);
}
filename_list[i]=strdup(filename.data());
char q;
if (i%2==0)
q='|';
else q='-';
printf("Fetching articles (%c)\r",q);
ofstream output_file;
sprintf(file_path,TMP_FILE,filename.data());
strncat(file_path,".html",5);
output_file.open(file_path);
output_file << file_content;
output_file.close();
}
Merci, qui a travaillé je ne devais l'écrire comme ceci: printf ("\ r"); printf ("Récupération d'articles (% c)", q); fflush (stdout); –
@Bartek, ah c'est ce qui a continué à me dérouter avec le \ r après le texte :) –