有哪位c语言高手知道下面的一个小程序究竟在哪里出了错?请附注详细的原因!

该程序只是在创建的一个下拉菜单上画一个边框,经过仔细检查,没有发现逻辑错误,而且经过单步执行,执行到最后一行“普通车(0xd9)”还完全正确,当执行完这一行时,再看结果,... 该程序只是在创建的一个下拉菜单上画一个边框,经过仔细检查,没有发现逻辑错误,而且经过单步执行,执行到最后一行“普通车(0xd9)”还完全正确,当执行完这一行时,再看结果,就出问题了,原先在创建的下拉菜单上画的一个矩形位置突然平行向上移了一行,从而上面的那一条边就不见了。这是为什么呢?
源程序如下:
#include<stdlib.h>
#include<stdio.h>
#include<dos.h>
#include<conio.h>
main()
{
int i;
int startx=1,starty=1,width=16,high=10; /*菜单尺寸*/
char buf[16*10*2];
textbackground(GREEN); /* 设置文本属性 */
clrscr();
gettext(4,2,19,11,buf); /* 备份将要被File下拉菜单窗口覆盖的区域到内存buf */
window(4,2,19,11); /* 创建一个下拉菜单窗口 */
textbackground(WHITE); /* 设置文本属性:白底黑字 */
textcolor(BLACK);
clrscr(); /*清屏*/
gotoxy(startx,starty);
putch(0xda); /*画左上角*/
for(i=startx+1;i<width;i++) /*画矩形上边线*/
putch(0xc4);
putch(0xbf); / *画右上角*/
for(i=starty+1;i<high;i++) /*画矩形左右边线*/
{
gotoxy(startx,i);
putch(0xb3);
gotoxy(width,i);
putch(0xb3);
}
gotoxy(startx,high);
putch(0xc0); /*画矩形左下角*/
for(i=startx+1;i<width;i++) /*画矩形下边线*/
putch(0xc4);
putch(0xd9); /*画矩形右下角*/
}
解答者最好能在编译器下运行出结果来!
如果解答得又快又好,追加分数!!
谢谢
更正:第二行引号里面的内容为“putch(0xd9)”;
展开
 我来答
free_panwei
2008-08-07 · 超过84用户采纳过TA的回答
知道小有建树答主
回答量:234
采纳率:0%
帮助的人:237万
展开全部
没有错的,你只要将:
char buf[16*10*2];
改大一点:
char buf[17*10*2];

和下面:
gettext(4,2,19,11,buf); /* 备份将要被File下拉菜单窗口覆盖的区域到内存buf */
window(4,2,19,11); /* 创建一个下拉菜单窗口 */
改为:
gettext(4,2,20,11,buf); /* 备份将要被File下拉菜单窗口覆盖的区域到内存buf */
window(4,2,20,11); /* 创建一个下拉菜单窗口 */
就可以了!

因为你原来的窗口设置了那么大,
执行完“ putch(0xd9); /*画矩形右下角*/ ”这句后自动换行,
你就看不到最上面的那行了!
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式