如何实现?(急,高手进~~)

pomelowu 2003-01-09 05:09:16
用pure c 和 pure c++实现:
从键盘读入字串,然后用上下左右4个键调整光标,对字串作出修改,然后存盘。
...全文
20 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
rushman 2003-01-10
  • 打赏
  • 举报
回复
不推荐直接使用中断,除非要做底层的应用。

即便是在Windows下,前面说的那些函数在TC2/TC3中也是完全可以用的(我试过,Win2K/TC3,它和Windows Console应用的实现机理不一样)。

C/C++的标准库函数是不支持如此操作控制台的(如搂主的应用),必须从操作系统得到支持。Win32API中有对控制台的操作接口,Unix/Linux下也有类似的接口。

//下面的例子可以看到如何在Windows Console中控制光标。
//在Windows Console中你可以将光标的控制写成gotoxy这样的函数
#include <windows.h>
#include <iostream.h>
#include <conio.h>

void goto_xy(unsigned X,unsigned Y,unsigned offset = 0)
{
HANDLE hStdout = GetStdHandle(STD_OUTPUT_HANDLE);
COORD coord;
// 实际在Windows Console中,未必是25行、80列
// 更准确的控制需要获得控制台信息,或者设置控制台尺寸
offset += X + Y * 80;
offset %= 80 * 25;

coord.X = offset % 80;
coord.Y = offset / 80;
SetConsoleCursorPosition(hStdout,coord);
}

void main(void)
{
DWORD write_count;

goto_xy(0,4);
printf("Hello\n");
getch();

goto_xy(4,0);
cout<<"Hello"<<endl;
getch();
}
北极猩猩 2003-01-10
  • 打赏
  • 举报
回复
我不知道你会不会是在DOS下执行这些。
反正直接写屏,gotoxy这些东西在windows下都是行不通的。
还是老老实实调中断吧。(int 10)
SwordMan2001 2003-01-10
  • 打赏
  • 举报
回复
不管在什么编译器,都支持嵌asm吧,
那就用10号中断,自己做个类似
“wherex/wherey可以取得光标位置 gotoxy可以设置光标位置 甚至可以设置字符窗口。”的函数,其实也就几行而已。
rushman 2003-01-09
  • 打赏
  • 举报
回复
直接写屏就不是“纯”C/C++了。
conio.h中有控制台相关的控制函数。
(这个也是非标准的,Borland公司的编译器支持下面的函数,但是标准的C库函数没有对控制台进行操作的)
wherex/wherey可以取得光标位置
gotoxy可以设置光标位置
甚至可以设置字符窗口。

输入可以用getch()(这个是标准的)
#include <stdio.h>
#include <conio.h>
.....
char c;
while(1)
{
c = getch();
printf("%d\n",int(c));//看看输出
if(c == '\n')
break;
}
sjd163 2003-01-09
  • 打赏
  • 举报
回复
你想用上下键做全屏幕修改可能困难。
pomelowu 2003-01-09
  • 打赏
  • 举报
回复
如何用直接写屏技术?
lw549 2003-01-09
  • 打赏
  • 举报
回复
用直接写屏技术就可以实现.
你连内存都不用申请.直接用远指针就可以了.
根据用户按下的键值,判断是否是光标键,如果是,则移动指针.否则,修改当前指针处的内容为用户按下的键值.

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧