繁体   English   中英

C / Objective-C中的回车符(“\\ r”)在gdb输出中不起作用

[英]Carriage return (“\r”) in C/Objective-C in gdb output not working

我希望输出到命令行(到目前为止,在XCode中的gdb命令行中)覆盖同一行。 我现在用于打印输出的代码从Objective-C方法中获取了一些东西,并最终执行此操作:

unsigned char _output = ...;
printf("Output:%c\r",_output);
fflush(stdout);

它打印正确的输出,但在连续的行上而不是覆盖。 问题是什么?

Xcode中的GDB控制台不是功能齐全的终端仿真。 它旨在支持与GDB的交互,就是这样。 如何处理控制字符取决于您使用的终端仿真器。 使用Terminal.app直接从命令行运行该工具会发生什么? xTerm怎么样? 的rxvt?

'\\ r'和'\\ n'的解释取决于平台或终端。 终端可以设置为自动将换行符(0x0a)附加到'\\ n'。 另外,'\\ n'是换行符 ,它可以表示单个换行符(假设回车符)或回车符和换行符对。 为了便于携带,人们不能指望'\\ r'只将托架(光标)返回到当前行的开头。

要到达同一行的开头,可能会想要使用'\\ b'(退格)。 但这也是主观的。 有些输出设备将命令解释为破坏性的,有些则将一个字符向后移动,非破坏性的,其他设备则忽略它。

我建议你使用光标定位库。 有些人推荐NCurses

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM