C 从控制台的特定位置获取输入

C 从控制台的特定位置获取输入,c,io,console,C,Io,Console,我想从控制台的特殊位置获取输入。我调用了mygotoxy函数以转到特定位置,然后调用gets或scanf以从该位置获取输入。但光标等待用户输入,不输入用户输入的上一个文本。我的代码有什么问题? 这是我的代码: //suppose we are in position (0,0) printf("%s","Hello world!\n"); //now we are in position (0,1) gotoxy(0,0); scanf("%s",string);//or gets(string

我想从控制台的特殊位置获取输入。我调用了my
gotoxy
函数以转到特定位置,然后调用
gets
scanf
以从该位置获取输入。但光标等待用户输入,不输入用户输入的上一个文本。我的代码有什么问题? 这是我的代码:

//suppose we are in position (0,0)
printf("%s","Hello world!\n");
//now we are in position (0,1)
gotoxy(0,0);
scanf("%s",string);//or gets(string)
现在字符串应该是
“Hello world!”
,但它等待用户输入

我的哥托西:

void gotoxy(int x , int y){
COORD newPosition={x,y};
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),newPosition);
}
gotoxy()
将更改光标的位置,以便将来进行输出操作,但这并不意味着您可以从屏幕上读取


scanf()
是一种标准功能,可从
stdin
读取数据,例如键盘。无法使用它读取以前在屏幕上打印的字符。要做到这一点,你只需维护你自己的缓冲区,在需要时读取你在屏幕上写入的字符。哪个标题包括
gotoxy
函数?请将源代码发布到
gotoxy()
,以及你认为它失败的原因。@Dogbert:如果你想要自己的
gotoxy())
如果不在Windows上运行,您可以使用:-但它不会更改问题的答案。永远,永远不要使用
get
。由于危险,它已从较新的C标准中删除。正如我所说的,我使用GET或scanf。我是一个初学者,所以请问这个问题:什么是缓冲区?缓冲区通常是内存中某个内容的数组,在本例中,屏幕的二维表示形式,您可以将字符写入其中,以便稍后检索。另一个问题:是否有一种简单的方法,以便在控制台更改时,我们的缓冲区同时更改?我不确定。在*nix上,你可以使用ncurses,答案是:但是因为你使用的是Windows,我不知道它的等价物是什么。