2016-07-02 80 views
0

編輯C數組我是一個小白到Ç編程(我來自的土地JSPHP),作爲一個學習的過程,我試圖寫一個程序,要求提供用戶的姓名,然後將其打印出來,除了將第一個字母更改爲z。然而,當我去編譯代碼,它返回以下error消息中提到的行name[0] = "Z";無法通過索引

警告:賦值時將指針整數,未作鑄

是否有一個原因,我可以」 t將值分配給chararray中的特定索引?

(注:我曾嘗試類型轉換"Z"爲char,但它只是扔error

警告:投從指針不同size`的整數)

+1

單引號不是雙引號 –

回答

5

不像某些語言做不區分字符串和字符,C需要不同的字符語法(與單字符字符串相比)。

你需要使用單引號:

name[0] = 'Z'; 

的錯誤是很神祕的,雖然。它試圖說"Z",一個單字符C字符串,被分配到name[0],一個整數類型char。 C字符串是數組;數組可轉換爲指針。因此,C將它視爲一個指向int的指針而不需要強制轉換。

+0

非常感謝。 JS和PHP沒有這樣的東西,所以我不知道。 –

4

替換name[0] = "Z";name[0] = 'Z';

'single-quatation'用於字符element,「double-quatation」用於字符串賦值。

2

在C中,單引號和雙引號帶有不同的含義。事實上,在C中沒有「字符串」的概念。您有基本的char數據類型,其中char由單引號表示。爲了表示字符串,可以將它們存儲爲一個字符數組。例如,

char text[] = {'h', 'e', 'l', 'l', 'o'}; 

這僅僅是一個寫作的比較繁瑣的方式

char text[] = "hello"; 

這是完全一樣的第一個例子,不同之處在於有一個是空字符\0末(這是C如何檢測「字符串」的結尾)。這與char text[] = {'h', 'e', 'l', 'l', 'o', '\0'};的說法相同,除非現在您可以更輕鬆地處理陣列,如果您想對其進行基於字符串的處理。


來到你的問題,如果你想索引的「串」某個字符,你需要通過它的指數在數組中訪問它。

因此,text[0]返回字符h,這是char類型。要指定不同的值,您必須指定一個單引號字符,如下所示:

text[0] = 'Z';