Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 如何向前移动文本光标?_C - Fatal编程技术网

C 如何向前移动文本光标?

C 如何向前移动文本光标?,c,C,我们可以将'\n'字符添加到字符串中,以便在使用printf时可以转到下一行 那么,如何将文本光标向前移动整整一行? 使用'\n'实现下一行同样简单 例如,这是一个字符串“I lie\moveforwardkk” 当我使用printf输出字符串时,应该是“我喜欢”,基于您的“我喜欢”示例,我假设您的意思是“向后”而不是“向前” 就我所知,没有一种超简单的方法可以实现你的目标。除非模拟按键盘上的箭头键,否则实际上无法通过编程方式移动光标。假设您使用的控制台支持移动光标 我所知道的最接近的方法是使用

我们可以将'\n'字符添加到字符串中,以便在使用
printf
时可以转到下一行

那么,如何将文本光标向前移动整整一行? 使用'\n'实现下一行同样简单

例如,这是一个字符串“I lie
\moveforwardk
k”

当我使用
printf

输出字符串时,应该是“我喜欢”,基于您的“我喜欢”示例,我假设您的意思是“向后”而不是“向前”

就我所知,没有一种超简单的方法可以实现你的目标。除非模拟按键盘上的箭头键,否则实际上无法通过编程方式移动光标。假设您使用的控制台支持移动光标

我所知道的最接近的方法是使用退格键(
\b
)擦除“e”,插入“k”,然后重新键入“e”:

  • 打印“我撒谎”

  • 打印“\b”。这将删除最后打印的字符(“e”)

  • 打印“ke”

注意,
\b
并不总是有效:

  • 它在REPLs中似乎不起作用,只有完整的控制台

  • 它无法删除换行符(
    \n
    )之前的任何内容。打印新行后,您已“保存”了该行上的所有内容

您也可以使用系统调用“cls”来完全擦除屏幕,但这也有很差的兼容性,需要您重新键入所有内容,而不仅仅是最后几个字符


我会注意到,在几年后查看我的答案后,我实际上错了。实际上,你可以移动光标。这可以通过使用ANSII转义码或像诅咒一样包裹它们的库来完成。不过,除非你需要,否则按退格可能是最简单的选择。

基于你的“我喜欢”例如,我假设你的意思是“向后”而不是“向前”

就我所知,没有一种超简单的方法可以实现你的目标。除非模拟按键盘上的箭头键,否则实际上无法通过编程方式移动光标。假设您使用的控制台支持移动光标

我所知道的最接近的方法是使用退格键(
\b
)擦除“e”,插入“k”,然后重新键入“e”:

  • 打印“我撒谎”

  • 打印“\b”。这将删除最后打印的字符(“e”)

  • 打印“ke”

注意,
\b
并不总是有效:

  • 它在REPLs中似乎不起作用,只有完整的控制台

  • 它无法删除换行符(
    \n
    )之前的任何内容。打印新行后,您已“保存”了该行上的所有内容

您也可以使用系统调用“cls”来完全擦除屏幕,但这也有很差的兼容性,需要您重新键入所有内容,而不仅仅是最后几个字符



我会注意到,在几年后查看我的答案后,我实际上错了。实际上,你可以移动光标。这可以通过使用ANSII转义码或像诅咒一样覆盖它们的库来完成。但是,除非你需要,否则按退格可能是最简单的选择。

你不能“向前移动”“如果没有要移动到的文本。您确定不只是想将其作为空格或制表符吗?根据您的编辑,您的意思是向后移动吗?在您的示例中,您需要使用
\b
(退格字符)删除“k”,然后重新键入“e”。也许他想要的是回车
\r
,但我对他的问题有点困惑。而且
\r
可能不会在某些控制台上产生预期的结果。但是允许使用printf(“\b”),对吗?@Byron是的,
\b
的行为就像你按下了退格键一样。但它并不是在每个控制台都能工作。这是我所知道的唯一改变已打印内容的方法。如果没有文本可移动,则无法“前进”。您确定不只是想将其作为空格或制表符吗?根据您的编辑,您的意思是向后移动吗?在您的示例中,您需要使用
\b
(退格字符)删除“k”,然后重新键入“e”。也许他想要的是回车
\r
,但我对他的问题有点困惑。而且
\r
可能不会在某些控制台上产生预期的结果。但是允许使用printf(“\b”),对吗?@Byron是的,
\b
的行为就像你按下了退格键一样。但它并不是在每个控制台都能工作。这是我所知道的唯一一种改变已印内容的方法。