簡體   English   中英

C-將int轉換為char

[英]C - Convert int to char

我正在尋找解決問題的方法(此處是新手)。

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

但是我找不到將元素數量轉換為字符串(或字符)的正確方法。

我已經嘗試過itoa ,cast( char ), +'0'snprintf ...沒有任何作用。

每當我問有關堆棧溢出的問題時,我都肯定解決方案會很明顯。 在此先感謝您的幫助。

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

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

  • 這有效: arrayNum[0] = "blabla";

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

我嘗試了無數其他組合,我什至不記得了...

可以將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;
};

arrayNum 不是 “字符串數組”。

以這種方式考慮可能對您很有用,但了解它的真正意義也很重要。 它是一個指針數組,其中每個指針都是指向char的指針。

有時,指向char的指針是“字符串”,有時是指向字符串中間的指針,有時僅是指向某個字符的指針。 這完全取決於您的使用方式。

C編程語言實際上沒有字符串。 它具有字符串文字 ,但是字符串文字只是一個以\\000結尾的字符const數組。 您可以寫arrayNum[0] = "blabla"; 是因為字符串文字的 "blabla"是一個指向第一個'b'中的“布拉布拉”,和的元素arrayNum陣列是指向字符。

您有責任確定arrayNum[i]是否指向某個字符串的第一個字符,或者它是否恰好指向某個單個字符; 並且您有責任決定並跟蹤它是否指向需要freed() ,是否指向只讀內存,是否指向堆棧中的內容,或者是否指向/指向某個對象靜態分配的數據結構。

語言不在乎。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM