2 u013288190 u013288190 于 2014.05.22 14:17 提问

求帮助!C语言有个输出线程无法执行

/*创建线程1:读入请求 */
DWORD ThreadID = 1;
//创建线程(对应于函数getInput()),用于接收电梯输入;
HANDLE hRead =CreateThread(NULL,0(LPTHREAD_START_ROUTINE)getInput,NULL,0,&ThreadID);

DWORD ThreadID2=2;//输出线程
HANDLE hRead2=CreateThread(NULL,0(LPTHREAD_START_ROUTINE)print,NULL,0,&ThreadID2);

//打印结果的函数
void print(void)
{
//time_count(5);
//printf("hHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHh\a");
if(IS_OUTPUT==1)
{
int i,j;
char c;
if((STATE_OUTPUT_FILE=fopen("d:\state_output_file.txt","a+"))==NULL)//打开文件2,state_output_file.txt
{//要写入的时候才打开文件,否则会出错,stream!=NULL
printf("\nCannot open file strike any key exit!");
getch();
exit(1);
}
system("color 2f");
hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute(hConsole, FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_INTENSITY);

//打印楼层信息
gotoxy(20,10);//控制光标位置,每次只改变要输出的内容  
printf("%d", current_floor+up_count+down_count);//都需要加上默认的偏移楼层
fputs("电梯的当前楼层为: ",STATE_OUTPUT_FILE);//将电梯状态读入文件STATE_OUTPUT_FILE中
c=(current_floor+up_count+down_count)+48;
fputc(c,STATE_OUTPUT_FILE);
fputs("\n",STATE_OUTPUT_FILE);

//打印目标楼层
gotoxy(20,12);
if(state!=IDLE&&state!=STOP)//电梯处于运行中,有目标楼层
{
printf("%d ",dest_floor);
fputs("电梯的目标楼层为: ",STATE_OUTPUT_FILE);//将电梯状态读入文件STATE_OUTPUT_FILE中
fputc(dest_floor+48,STATE_OUTPUT_FILE);
fputs("\n",STATE_OUTPUT_FILE);

}
else
{
    printf("无");
    fputs("电梯的目标楼层为: 无\n",STATE_OUTPUT_FILE);//将电梯状态读入文件STATE_OUTPUT_FILE中
}

//打印电梯的运行方向
gotoxy(20,14);
if(direction==NONE)//处于闲置时
{
printf("没有");
fputs("电梯的运行方向为: 无\n",STATE_OUTPUT_FILE);//将电梯状态读入文件STATE_OUTPUT_FILE中
}
else
if(state==RUN)//处于运行时
if(direction == UP)
{
printf("向上");
fputs("电梯的运行方向为: 上\n",STATE_OUTPUT_FILE);//将电梯状态读入文件STATE_OUTPUT_FILE中

         }
         else 
         {
             printf("向下");
             fputs("电梯的运行方向为: 下\n",STATE_OUTPUT_FILE);//将电梯状态读入文件STATE_OUTPUT_FILE中
         }
    else
    {
        printf("没有");
        fputs("电梯的运行方向为: 无\n",STATE_OUTPUT_FILE);//将电梯状态读入文件STATE_OUTPUT_FILE中
    }

//打印电梯的状态
gotoxy(20,16);
if(state==RUN) //处于运行时

{
printf("RUN ");
fputs("电梯的运行状态为: RUN\n",STATE_OUTPUT_FILE);//将电梯状态读入文件STATE_OUTPUT_FILE中

}
else if(state==IDLE)
{

    printf("IDLE");
    fputs("电梯的运行状态为:IDLE\n",STATE_OUTPUT_FILE);//将电梯状态读入文件STATE_OUTPUT_FILE中
}
else 
{
    printf("STOP");
    fputs("电梯的运行状态为: STOP\n",STATE_OUTPUT_FILE);//将电梯状态读入文件STATE_OUTPUT_FILE中
}

//打印内部未响应楼层数
gotoxy(54,10);
fputs("电梯的内部未响应楼层为: ",STATE_OUTPUT_FILE);//将电梯状态读入文件STATE_OUTPUT_FILE中
for(i=1,j=0;i<10;i++)
{
if(inside[i]!=0)
{
printf("%d ",i);
fputc(i+48,STATE_OUTPUT_FILE);
j++;
}
}
if(j==0)
{
printf("无");
fputs("无",STATE_OUTPUT_FILE);
for(i=1;i<9;i++)
printf(" ");
}
else
{
for(i=1;i<=9-j;i++)
printf(" ");
}
fputc('\n',STATE_OUTPUT_FILE);

//overweight(j);

//打印外部未响应楼层数
//外部向上
fputs("电梯的外部未响应楼层为: ",STATE_OUTPUT_FILE);//将电梯状态读入文件STATE_OUTPUT_FILE中
gotoxy(54,12);
for(i=1,j=0;i<10;i++)
{
if(outside_up[i]!=0)
{
printf("%d ",i);
fputc(i+48,STATE_OUTPUT_FILE);
j++;
}
}
if(j==0)
{
printf("无");
fputs("无",STATE_OUTPUT_FILE);
for(i=1;i<9;i++)
printf(" ");
}
else
{
for(i=1;i<=9-j;i++)
printf(" ");
}
// 外部向下
gotoxy(54,14);
for(i=1,j=0;i<10;i++)
{
if(outside_down[i]!=0)
{
printf("%d ",i);

        j++;
    }
}
if(j==0)
{
    printf("无");

    for(i=1;i<9;i++)
       printf("  ");
}
else
{
    for(i=1;i<=9-j;i++)
       printf("  ");
}
fputc('\n',STATE_OUTPUT_FILE);//??? 
// 系统时间 
gotoxy(54,16);
printf("            ");
gotoxy(54,16);
total_finish=clock();
//fputs("系统已经运行的时间:  ",STATE_OUTPUT_FILE);
printf("%d",(total_finish-total_start)/1000);
//fputc((total_finish-total_start)/1000+48,STATE_OUTPUT_FILE);

fputs("\n\n\n",STATE_OUTPUT_FILE);

//该层时间
gotoxy(54,18);
printf(" ");
gotoxy(54,18);
time2=clock();
printf("%d",(time2-time1)/1000);
time1=clock();
//当前服务策略
gotoxy(20,20) ;
if(change_running_strategy==1)
{
printf("先来先服务");
}
else if(change_running_strategy==2)
{
printf("顺便服务");
}
//坐标归位
gotoxy(0,22);
printf("\n");
//fflush(STATE_OUTPUT_FILE); //确保不关闭文件情况下数据能写入
fclose(STATE_OUTPUT_FILE);
}
}

1个回答

u013288190
u013288190   2014.05.22 14:19

求大神能够指导线程,我的QQ,896776703,谢谢了,,,电梯这线程不知错哪儿了

Csdn user default icon
上传中...
上传图片
插入图片