0
所以我想知道如何將實際的字符存儲到數組中。如何將實際字符存儲到數組中?
char arr[4] = "sup!";
char backwards[4];
backwards[0] = *(arr + 3);
我想我的第二個問題是,如果我這樣做,會,如果我提示向後[0]使用%C的printf的,將實際的字符出現?
所以我想知道如何將實際的字符存儲到數組中。如何將實際字符存儲到數組中?
char arr[4] = "sup!";
char backwards[4];
backwards[0] = *(arr + 3);
我想我的第二個問題是,如果我這樣做,會,如果我提示向後[0]使用%C的printf的,將實際的字符出現?
首先,讓我們來解決您的數組大小的問題:
在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
應該做的伎倆。
是的。 'printf(「%c」,向後[0]);'會打印'!' 爲什麼不試試? –
不知道......我應該在創建一個程序時發現一個奇怪的錯誤,所以我想也許這會有所幫助,但是您的權利我可以完成它,謝謝。 – Bourezg