一段简单程序为什么在linux终端与win控制台下运行效果不同?(望高手指点)
来源:互联网 发布:linux删除用户附加组 编辑:程序博客网 时间:2024/05/19 14:17
一段简单程序为什么在linux终端与win控制台下运行效果不同,是程序问题还是兼容性问题,希望有谁能指点一下:
程序是这样的(怎么加为高亮?):
#include <stdio.h>
int ProgressBar(int p, char *barname);
int main(int argc, char *argv[])
{
long int i=0;
for (i=0; i<=180000000; i++) //模拟进度条增长
{
if(i!=0 && 180000000/i<=100 && 180000000%i==0) /* 只在进度条长度101-180000000/i为1到100时,刷新进度条*/
{ /*这个进度条就是显示‘进度条长度’个'|'字符,这个for循环应该使进度条不断增长直到结束*/
ProgressBar(101-180000000/i, "Progress Bar"); /* ProgressBar第一个参数是0到100之间 ,表示进度条的长度*/
}
}
return 0;
}
int ProgressBar(int p, char *barname)
{
if(p>100)
{
return 0;
}
int i=1, pbc;
char pro[50+1];
pbc = p/2; //length of progress bar
if(pbc==0)
{
putchar(10);
printf("/r%s %d%c", barname, p, 37);
}
else
{
pro[0]='|';
while(i<pbc)
{
pro[i]='|';
i++;
}
pro[i]=0;
printf("/r%s %s %d%c", barname, pro, p, 37);
}
}
win控制台效果:(vc6下编译)
如同预期的效果进度条不断增长直到100%
linux终端显示是:(gcc编译连接,直接执行pbar)
实际效果是根本没有个增长的过程,而是光标闪烁一段时间后(程序在运行)直接显示如下(100%)
将这段稍作修改 原本要整除180000000%i==0,才刷新 Progress Bar(在同一行刷新Bar是用回车符'/r’),改为180000000%i<50
这样一个范围内刷新,这样 linux终端显示效果会好些,而且这个值越大,效果越好(指的是增长的效果是连续的);
for (i=0; i<=180000000; i++) //模拟进度条增长
{
if(i!=0 && 180000000/i<=100 && 180000000%i<50) // 只在进度条长度101-180000000/i为1到100时,刷新进度条
{ //这个进度条就是显示‘进度条长度’个'|'字符,这个for循环应该使进度条不断增长直到结束
ProgressBar(101-180000000/i, "Progress Bar"); // ProgressBar第一个参数是0到100之间 ,表示进度条的长度
}
}
太大也会出现异样,比如改为180000000%i<500, 不过这个效果倒是和win控制台一样
请问下各位,这个问题出在哪里了?
补充:
linux终端执行以下代码:
ProgressBar(10, "test");
for (i=0; i<=80000000; i++);
ProgressBar(30, "test");
for (i=0; i<=80000000; i++);
ProgressBar(80, "test");
for (i=0; i<=80000000; i++);
ProgressBar(10, "test");
出现这种结果是对的,就是过程上看不到 从 ProgressBar(10, "test");到 ProgressBar(80, "test");
的过程,而是光标闪烁一段时间后(程序在运行)直接显示这个效果 ,还有就是如果ProgressBar()后都加上putchar(10)
倒是可以按应有的顺序print出来:
- 一段简单程序为什么在linux终端与win控制台下运行效果不同?(望高手指点)
- 在控制台下运行c语言程序
- 在dos控制台下运行Java程序
- Java 入门--在控制台下运行java程序
- C++ 控制台下,简单小时钟程序
- 在Linux控制台下显示JPEG图像
- 在Linux控制台下显示JPEG图像
- 在Linux控制台下显示JPEG图像
- 在Linux控制台下显示JPEG图像
- 在Linux控制台下显示JPEG图像
- 在Linux控制台下显示JPEG图像
- 新手写openmp程序,结果不能运行,求教高手指点
- 使程序在Linux下后台运行 (关掉终端继续让程序运行的方法)
- 使程序在Linux下后台运行 (关掉终端继续让程序运行的方法)
- 使程序在Linux下后台运行 (关掉终端继续让程序运行的方法)
- 使程序在Linux下后台运行 (关掉终端继续让程序运行的方法)
- 使程序在Linux下后台运行 (关掉终端继续让程序运行的方法)
- 使程序在Linux下后台运行 (关掉终端继续让程序运行的方法)
- JSF DataTable动态添加Column
- QQ2009 协议分析及破解
- 数据库的连接数对应用系统性能的影响
- JAVA动态代理内部实现
- shell平时用的上的一些脚本
- 一段简单程序为什么在linux终端与win控制台下运行效果不同?(望高手指点)
- No.24
- jsf-后台动态生成richfaces的dataTable(转载)
- linux的less命令
- html读书笔记三
- 差点将数据库搞坏
- XP 下Tomcat 6.0.26 配置
- 苹果15英寸MacBook Pro内部
- 用Dreamware制作弹出菜单