簡體   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