當我打印%c格式的字符並且字符不可打印如'\ 0'時,則不存在打印輸出列。如果我使用%1c,則相同。或%1.1c。有沒有辦法強制printf輸出'\ 0'列?如何打印總是打印一列的字符
我正在做一些大的printf的,我想列匹配。
當我打印%c格式的字符並且字符不可打印如'\ 0'時,則不存在打印輸出列。如果我使用%1c,則相同。或%1.1c。有沒有辦法強制printf輸出'\ 0'列?如何打印總是打印一列的字符
我正在做一些大的printf的,我想列匹配。
沒有什麼可以爲printf做。但是你可以用isprint過濾的printf的參數
printf("%c", (isprint(c) ? c : ' '));
Thx,George。這對我行得通。我試圖使用宏,但無法使其工作。得到這些消息:'subs.c:40:警告:格式太少的參數 subs.c:40:錯誤:預期表達式'之前','令牌 subs.c:40:錯誤: '***我永遠不會想出迷你Markdown *** – grok12 2011-05-21 16:11:36
我認爲宏不起作用,因爲isprint是一個宏,你不能嵌套宏。 (這是一個猜測。)現在我正在使用#define N(c)(c =='\ 0'?'\\':c)爲\'0打印\。我喜歡這個,因爲它的輸入很短,並且讓我看到字符串上的終止字符,而不會混淆其他非printables。我喜歡這個。 – grok12 2011-05-21 18:04:05
您可以使用isprint
函數檢查字符是否可以先打印。
if(isprint(c)) {
printf("%c", c);
}
else {
print("?");
}
不知道你打算如何處理不可打印的字符。
如何寫
printf("%c",(c<' ')?' ':c);
您可以輕鬆地把它放進一個#define
。
bitmask,我給你評論+1建議一個宏。在接受的答案下查看我的第二條評論。 – grok12 2011-05-21 18:07:02
你可以改變字符參數
isgraph(C)? c:''
您是否也遇到了其他字符的問題?還是隻有\ 0?在後者的情況下,打印'(c =='\ 0'?'':c)'。 – GolezTrol 2011-05-21 15:13:03
@Golez在喬治的回答下看到我的第二條評論。 – grok12 2011-05-21 18:05:30