[原创]帮看看这个,执行结果不太满意
#include <conio.h> main()
{
int i ;
char*f[]=
{
"Load lilibo","Pick Alt-F3","New ",
"Save F2","Write to ","Directory",
"Change dir","Os shee ","Quit Alt-X"
}
;
char buf[9*14*2];
clrscr();
textcolor(YELLOW);
textbackground(BLUE);
clrscr();
gettext(10,2,24,11,buf);
window(10,2,24,11);
textbackground(RED);
textcolor(YELLOW);
clrscr();
for(i=0;i<9;i++)
{
gotoxy(1,i++);
cprintf("%s",f[i]);
}
getch();
movetext(10,2,24,11,40,10);
puttext(10,2,24,11,buf);
getch();
}
搜索更多相关的解决方案:
结果
----------------解决方案--------------------------------------------------------
以下是引用另糊葱在2005-8-26 16:30:17的发言:
#include <conio.h>
main()
{
int i ;
char*f[]=
{
"Load lilibo","Pick Alt-F3","New ",
"Save F2","Write to ","Directory",
"Change dir","Os shee ","Quit Alt-X"
}
;
char buf[9*14*2]; //buf 不够大,gettext会造成溢出,建议使用2048,具体怎么计算我不是很清楚
clrscr();
textcolor(YELLOW);
textbackground(BLUE);
clrscr();
gettext(10,2,24,11,buf);
window(10,2,24,11);
textbackground(RED);
textcolor(YELLOW);
clrscr();
for(i=0;i<9;i++)
{
gotoxy(1,i++); // 这里会造成数组越界
cprintf("%s",f[i]);
}
getch();
movetext(10,2,24,11,40,10);
puttext(10,2,24,11,buf);
getch();
}
我不知道你要实现怎么样的效果,是不是将一块已绘制的区域移动到另一处,如果是移动,那么gettext和puttext在这里不妥,因为movetext会自动将该区域文本都重新绘制过去的,无须使用gettext和puttext。
for语句处的错误,给你个修改建议:
for(i=1;i<10;i++) {
gotoxy(1,i);
cprintf("%s",f[i-1]);
} ----------------解决方案--------------------------------------------------------