C 如何向前移动文本光标?
我们可以将'\n'字符添加到字符串中,以便在使用C 如何向前移动文本光标?,c,C,我们可以将'\n'字符添加到字符串中,以便在使用printf时可以转到下一行 那么,如何将文本光标向前移动整整一行? 使用'\n'实现下一行同样简单 例如,这是一个字符串“I lie\moveforwardkk” 当我使用printf输出字符串时,应该是“我喜欢”,基于您的“我喜欢”示例,我假设您的意思是“向后”而不是“向前” 就我所知,没有一种超简单的方法可以实现你的目标。除非模拟按键盘上的箭头键,否则实际上无法通过编程方式移动光标。假设您使用的控制台支持移动光标 我所知道的最接近的方法是使用
printf
时可以转到下一行
那么,如何将文本光标向前移动整整一行?
使用'\n'实现下一行同样简单
例如,这是一个字符串“I lie\moveforwardk
k”
当我使用printf
输出字符串时,应该是“我喜欢”,基于您的“我喜欢”示例,我假设您的意思是“向后”而不是“向前”
就我所知,没有一种超简单的方法可以实现你的目标。除非模拟按键盘上的箭头键,否则实际上无法通过编程方式移动光标。假设您使用的控制台支持移动光标
我所知道的最接近的方法是使用退格键(\b
)擦除“e”,插入“k”,然后重新键入“e”:
- 打印“我撒谎”
- 打印“\b”。这将删除最后打印的字符(“e”)
- 打印“ke”
\b
并不总是有效:
- 它在REPLs中似乎不起作用,只有完整的控制台
- 它无法删除换行符(
)之前的任何内容。打印新行后,您已“保存”了该行上的所有内容\n
我会注意到,在几年后查看我的答案后,我实际上错了。实际上,你可以移动光标。这可以通过使用ANSII转义码或像诅咒一样包裹它们的库来完成。不过,除非你需要,否则按退格可能是最简单的选择。基于你的“我喜欢”例如,我假设你的意思是“向后”而不是“向前” 就我所知,没有一种超简单的方法可以实现你的目标。除非模拟按键盘上的箭头键,否则实际上无法通过编程方式移动光标。假设您使用的控制台支持移动光标 我所知道的最接近的方法是使用退格键(
\b
)擦除“e”,插入“k”,然后重新键入“e”:
- 打印“我撒谎”
- 打印“\b”。这将删除最后打印的字符(“e”)
- 打印“ke”
\b
并不总是有效:
- 它在REPLs中似乎不起作用,只有完整的控制台
- 它无法删除换行符(
)之前的任何内容。打印新行后,您已“保存”了该行上的所有内容\n
我会注意到,在几年后查看我的答案后,我实际上错了。实际上,你可以移动光标。这可以通过使用ANSII转义码或像诅咒一样覆盖它们的库来完成。但是,除非你需要,否则按退格可能是最简单的选择。你不能“向前移动”“如果没有要移动到的文本。您确定不只是想将其作为空格或制表符吗?根据您的编辑,您的意思是向后移动吗?在您的示例中,您需要使用
\b
(退格字符)删除“k”,然后重新键入“e”。也许他想要的是回车\r
,但我对他的问题有点困惑。而且\r
可能不会在某些控制台上产生预期的结果。但是允许使用printf(“\b”),对吗?@Byron是的,\b
的行为就像你按下了退格键一样。但它并不是在每个控制台都能工作。这是我所知道的唯一改变已打印内容的方法。如果没有文本可移动,则无法“前进”。您确定不只是想将其作为空格或制表符吗?根据您的编辑,您的意思是向后移动吗?在您的示例中,您需要使用\b
(退格字符)删除“k”,然后重新键入“e”。也许他想要的是回车\r
,但我对他的问题有点困惑。而且\r
可能不会在某些控制台上产生预期的结果。但是允许使用printf(“\b”),对吗?@Byron是的,\b
的行为就像你按下了退格键一样。但它并不是在每个控制台都能工作。这是我所知道的唯一一种改变已印内容的方法。