- 论坛徽章:
- 0
|
请看一段程序?
#include <curses.h>;
#include <malloc.h>;
#include <form.h>;
#include <stdio.h>;
#include <locale.h>;
struct cwmc{
char czh[12];
char cmc[30];
}cwmc1;
struct cwmc *tfp;
main()
{
FILE *fp; FIELD *field[3]; FORM *form;
int ch,ch1,i=0;
char *aczh,*acmc; char *bczh,*tczh;
if((tfp=(struct cwmc *) malloc(sizeof(struct cwmc)))==NULL)
{ printf("内存分配失败!\n" ;
exit(0);
}
if((fp=fopen("cwm01.dat","r" )==NULL){
printf("文件打开失败!\n" ;
exit(0);
}
setlocale(LC_CTYPE,"" ;
initscr();
keypad(stdscr,TRUE);
meta(stdscr,TRUE);
field[0]=new_field(1,12,8,22,0,0);
field[1]=new_field(1,30,12,22,0,0);
field[2]=NULL;
field_opts_off(field[0],O_AUTOSKIP);
field_opts_off(field[1],O_AUTOSKIP);
form=new_form(field);
post_form(form);
refresh();
loop:
move(23,12); clrtoeol();
i=0;
mvprintw(3,30,"按学号查询" ;
move(4,01);
hline(ACS_HLINE,80);
mvprintw(8,10,"1.学 号:" ;
mvprintw(12,10,"2.姓 名:" ;
move(21,01);
hline(ACS_HLINE,80);
mvprintw(22,01,"帮助信息:" ;
mvprintw(23,01,"提示信息:" ;
mvprintw(22,12,"[ESC-退出]" ;
refresh();
move(8,20);
aczh=field_buffer(field[0],0);
set_field_back(field[0],A_REVERSE);
form_driver(form,REQ_OVL_MODE);
form_driver(form,REQ_VALIDATION);
while((ch=getch())!=27)
{ switch(ch)
{ case 10:
form_driver(form,REQ_NEXT_FIELD);
switch(i){
case(1):{ set_field_back(field[1],A_NORMAL);
mvaddstr(23,12,"确认要发送数据吗?[Y/N]");
mvaddch(23,35,'Y');
move(23,35);
ch1=getch();
switch(ch1)
case 'n':
case 'N':
goto loop;
case 'y':
case 'Y':
do{
fread(tfp,sizeof(struct cwmc),1,fp);
set_field_buffer(field[0],0,tfp->;czh);
tczh=field_buffer(field[0],0);
set_field_buffer(field[1],0,tfp->;cmc);
acmc=field_buffer(field[1],0);
if(tczh==aczh)break;
else
mvaddstr(12,12,"qqqq");goto loop;
}while(1);
mvprintw(8,52,acmc);
move(8,20);set_field_back(field[0],A_REVERSE);
}
break;
}
set_field_back(field,A_NORMAL);
i++;
set_field_back(field,A_REVERSE);
switch(i){
case(2):{i=0;}
}
break;
case KEY_UP:
switch(i){
case(0):
i=1;}
i--;
set_field_back(field,A_REVERSE);
set_field_back(field[i+1],A_NORMAL);
form_driver(form,REQ_PREV_FIELD);
break;
case KEY_LEFT:
form_driver(form,REQ_PREV_CHAR);
break;
case KEY_RIGHT:
form_driver(form,REQ_NEXT_CHAR);
break;
case KEY_BACKSPACE:
form_driver(form,REQ_DEL_PREV);
break;
default:
form_driver(form,ch);
break;
}
}
unpost_form(form);
free_form(form);
free_field(field[0]);
free_field(field[1]);
free(tfp);
endwin();
return 0;
}
现把代码贴出来,请看看那段do{.......}while(1)循环怎么编译
通不过,怎么才能正常退出,请给改一下! |
|