我希望我的程序在处理时显示unix风车.有一个for循环,在每次迭代中都有一个printf函数:
printf("Fetching articles (%c)\r",q);
Run Code Online (Sandbox Code Playgroud)
q是风车中的一个字符( - \| /),具体取决于迭代次数.
问题是 - 似乎在100次迭代中,显示的行只有两个变化,每次迭代大约需要一秒钟才能完成.
什么可能是这个的答案?
这是整个循环,只有两个可能的风车字符:
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();
}
Run Code Online (Sandbox Code Playgroud)
写完每一行后刷新输出:
printf("Fetching articles (%c)\r",q);
fflush(stdout);
Run Code Online (Sandbox Code Playgroud)
如果不执行此操作,通常stdout会进行缓冲,并且只在看到换行符或其内部缓冲区填满时才转储其输出.
| 归档时间: |
|
| 查看次数: |
441 次 |
| 最近记录: |