2013-11-10 37 views
0

所以我想知道如何將實際的字符存儲到數組中。如何將實際字符存儲到數組中?

char arr[4] = "sup!"; 
    char backwards[4]; 
    backwards[0] = *(arr + 3); 

我想我的第二個問題是,如果我這樣做,會,如果我提示向後[0]使用%C的printf的,將實際的字符出現?

+2

是的。 'printf(「%c」,向後[0]);'會打印'!' 爲什麼不試試? –

+0

不知道......我應該在創建一個程序時發現一個奇怪的錯誤,所以我想也許這會有所幫助,但是您的權利我可以完成它,謝謝。 – Bourezg

回答

2

首先,讓我們來解決您的數組大小的問題:

在C字符數組null-terminated:這意味着你需要爲尾隨\0終止您的字符串添加空間。您可以在第一行使用char arr[5]。 (請注意,如果你是絕對肯定NEVER將使用這個字符數組與任何C字符串處理函數,你分配你的角色單獨作爲一個字符,而不是作爲一個字符串,這是不在技​​術上是必需的,但爲自己節省一些調試時間並使用額外的字節。)這可能是你的「奇怪錯誤」的來源。

看起來好像你已經知道了,但要記住的另一件事是在C中,數組是zero-based。這意味着,當你聲明和數組一樣char arr[4],你真的

arr[0] 
arr[1] 
arr[2] 
arr[3] 

C並不知道讓你走了你的陣列和跺腳的數據結束或錯誤值讀取疑慮。這裏是龍。小心。現在

,到您的實際問題:

1)您如果使用雙引號用單引號arr[2]='x';分配實際字符,你分配一個C字符串,這是空值終止,所討論的。

2)是的,printf%c應該做的伎倆。

相關問題