(C语言) 如何输出一串可编辑的文字?高手帮帮忙~谢谢~

来源:百度知道 编辑:UC知道 时间:2024/04/28 05:18:53
最近正在写一个软件,是文本模式的控制台程序。目前遇到这样一个问题:

有一个功能是修改程序里的某个数据,
我先printf("请输入XXX的新值: ");
然后我想把XXX的原值也输出在屏幕上,而且还是可以修改的!
也就是说,屏幕上的效果如下:

请输入XXX的新值: 465

这时如果我按退格就可以删掉5(但是到了“: ”就删不掉了)。而且按“←”光标就往左移一个。
而且这时我用scanf也可以读入“: ”后面的东西。就像“465”是用键盘打上去的一样。

这样设计是为了便于使用者修改。
哪位强人会?帮我看一看。。
谢谢各位的回答,

我想做的效果是,先输出一句提示:printf("请输入XXX的新值: ");
然后用某种方法输出XXX原来的值,使它就好像是从键盘上输入的一样。我可以用方向键把光标自由移动到那几个字符的中间,可以插入一些字符,也可以删除一些。

梦想窗外 提出的方法我以前用过,还可以,但还是不太理想。我关键是想让用户自由修改参数的值。

或者 谁能告诉我C语言中有没有能模拟键盘的一个键按下去的函数? (我用TurboC++,其它的编译器如果行的话也给我说说~~)

打印'\b'可将之前输出的字符擦除,如:
int i = 0;
printf("请输入XXX的新值: ");
while (i++ < 30)
putchar('\b');

模拟键盘击键:
#include <stdio.h>
#include <stdlib.h>
#include <alloc.h>
#include <dos.h>
/* 这个函数模拟键盘输入Hello World!字串 */
void keyboard(char *key)
{
/*
0040:001AH - 0040:001BH 存放键盘缓冲区首指针
0040:001CH - 0040:001DH 存放键盘缓冲区尾指针
0040:001EH - 0040:003EH 键盘缓冲区,存放击键字符
*/
int offset=peek(0x40,0x1c);
int i = 0;

while (key[i] != '\0')
{
/* 每次击键用两个字节存放,非功能键第一个字节为字符的ASCII码,第二个字节为0 */
pokeb(0x40,offset,key[i]);
pokeb(0x40,offset+1,0x00);

offset += 2;
if(offset==0x3e)offset=0x1e;
++i;
}
pokeb(0x40,0x1c,offset);
}
void main()
{
char s1[] = "Hello World!";
char s2[15];
keyboard(s1);
gets(s2);
printf("%s&