2013-11-09 45 views
0

由於問題已經告訴:有沒有任何作爲佔位符的ASCII字符無效?

我想知道,是否有一個ASCII字符,將由C輸入/輸出對待沒有任何影響?

作爲例子,當我寫的(其中Y將代表該字符)

printf ("abcYdYfg"); 

輸出應該是:

abcdfg

而這種控制字符也不可有影響任何標準存儲器或字符串操作功能。

是否有任何ASCII字符提出這個要求?

+0

好打印,請嘗試測試,並全部打印出來。 – OldProgrammer

+0

沒有什麼幫助,因爲可能會有副作用,我現在不會注意到,但稍後會在某些內存或字符串操作中破壞某些內容。 – dhein

+3

我不確定是否有一個,但也許你可以描述你試圖解決的根本問題 - 它可能有更好的解決方案。 –

回答

2

您可以嘗試使用0x1d, 0x1e,0x1f,那些是組,記錄和單位分隔符。它們的目的正是你想要做的。看到ASCII, the history

這就是說,我不認爲你想用這種方式特殊字符,而是使用memmove(3)作爲@R建議在您的意見問題。

+0

我是否理解它是正確的,他們只是被認爲是一種「元信息」?並且不要求任何操作? – dhein

+0

事實上,只有'0x0'對通常的'C'函數有任何意義。關於印刷,當然會一直歸結於你的shell的實現,而且它沒有做任何愚蠢的事情。 – jbr

+0

0x0a 0x0b 0x0c 0x0d對輸出有影響嗎?或者我弄錯你了嗎? – dhein

2

答案很大程度上取決於「無效」的含義。就寫入文件/流/設備的內容而言,沒有這樣的事情。寫入的每個字符都會將文件位置前進一個字節/字符或在該行上傳輸字符。但是,如果您正在討論寫入交互式顯示設備(終端),則會出現不會移動光標的字符。最明顯的例子是NUL字符('\0')。你不能在一個C字符串嵌入它(因爲它終止字符串),但你可以把它用%c和一個參數0與printf或通過putcfwrite

相關問題