2016-03-15 77 views
0

在我的計算機體系結構課程中,我們被要求編寫一個程序,它接受一個'ASCII'字符串作爲函數參數之一。不知道可能有不同的字符串變體,我會像往常一樣聲明一個字符數組,但是如何聲明一個特定於ASCII字符串的字符數組。請提供一個指向ASCII字符串聲明的指針示例。如果提到的內容不清楚,請在下面評論。C中的字符串和ASCII字符串有區別嗎?

+4

所有的ASCII字符串都是字符串;該任務可能會說,所以你知道你*不必確保你的程序使用UTF-8字符串或UTF-16字符串或EBCDIC(!)字符串。 – immibis

+1

根據C11規範,您的選擇是'char','wchar_t','char16_t'和'char32_t'。指定'ASCII'字符串意味着一個簡單的'char'數組應該可以工作。 – user3386109

回答

1

C中的每個字符串都是ASCII。標準的ASCII字符是7位寬。你的教授只是想強調你應該使用字節數組來存儲字符串。不像我們說UTF-8,它可以使用最多4個字節來編碼某些字符。

char *str = "example";

+0

C程序可以處理非ASCII字符串,並且一直這樣做。像'grep'這樣的POSIX命令的大多數現代GNU/Linux實現都是用C語言編寫的,並且使用UTF-8字符串(如果使用utf8語言環境)。而且,ASCII字符是8位寬,但只有7位有效位。高位總是被清除,但它是ASCII編碼的一部分,不僅僅是通過將值存儲在C'char' /'int8_t'數組中引入的填充。 –

相關問題