2016-11-20 70 views
0

我正在爲我的問題尋求解決方案(新手在這裏)。C - 將int轉換爲字符

我有一個字符串數組(char** arrayNum),我想將該數組的元素數量存儲在第一個索引處。

但我無法找到正確的方法來將元素數量轉換爲字符串(或字符)。

我試過itoa,鑄造(char),+'0',snprintf ...沒什麼效果。

由於每次我在Stack Overflow上提出一個問題時,我確信解決方案是顯而易見的。在此先感謝您的幫助。

所以我有一個字符串數組char** arrayNum我填充,留下索引0爲空。

當我嘗試將一個字符串分配給arrayNum[0]

  • 這工作:arrayNum[0] = "blabla";

  • 這不起作用:arrayNum[0] = (char) ((arraySize - 1)+'0');

我已經試過了無數人的組合,我甚至不記得...

+2

因爲'arrayNum [0]'的類型不是'char'類型'char *',所以您不能爲其指定一個'char'。 –

+1

我可以問你,爲什麼你想這樣做?此外,由於顯然你將'const char *'(例如''blabla「')賦值給你的數組元素,所以你應該聲明它爲'const char ** arrayNum'。 – nbro

+1

是否有理由不能使用長度爲一個元素的'struct'和字符串數組作爲第二個元素? – mhawke

回答

1

arrayNum可以被認爲是一串字符串(char *)。因此,嘗試將char(或實際上除char *以外的任何其他類型)分配給此數組的元素時,您自然會遇到問題。

我認爲最好將數組長度分別存儲到數組中。例如,使用struct。否則會引起混淆。

如果你真的想要的長度存儲在第一個元素,那麼你可以這樣做:

arrayNum[0] = malloc(sizeof(char)); 
arrayNum[0][0] = (char) ((arraySize - 1)+'0'); 

這需要的事實arrayNum嚴格指針數組和每個優勢這些指針是指向char的指針。所以它可以指向一個字符或一個字符數組(一個「字符串」)。

比較這對清晰度(說):

struct elements { 
    int length; 
    char **data; 
}; 
+0

我已經建立了像你所建議的結構。這是一個更好的解決方案,我猜更好的編碼。 –

1

arrayNum的 「字符串數組。」

這樣想你可能會很有用,但重要的是要知道它到底是什麼。它是一個指針數組,其中每個指針都是指向char的指針。

有時一個指向char是「字符串」,有時它是一個指針到一個字符串的中間,有時它只是一個指向某個字符的地方。這完全取決於你如何使用它。

C編程語言沒有真正的字符串。它有字符串文字,但字符串文字只是一個const字符數組,恰好以\000結尾。您可以編寫arrayNum[0] = "blabla";的原因是因爲字符串文字"blabla"是指向「blabla」中第一個'b'的指針,而arrayNum數組的元素是指向字符的指針。

這是你的責任,以決定是否指向一些字符串的第一個字符,或者它是否恰好指向某個單個字符;這是你的責任,決定和追蹤它是否指向需要的東西,或者它指向只讀內存,還是指向堆棧上的東西,還是指向某些靜態分配的內容數據結構。

該語言不關心。