[英]Can i assign a integer to a character pointer array?
int k=5;
char* result = (char *)malloc(100 * sizeof(char));
result[count] = k;
考慮到上面的代碼,如果我打印result[count]
的內容,它會打印笑臉符號。 我試過如下,但沒有用。
result[count]=(char)k;
誰能幫我?
我認為malloc(100*sizeof(char))
將連續創建100
個字符大小的塊。 如果我錯了,請糾正我?
我將忽略有關數組和 malloc 的所有內容,因為它與您描述的問題無關。 您似乎本質上是在問“此代碼將打印什么:”
char c = 5;
printf("%c", c);
它將在您的符號表中打印符號 5,很可能是一個不可打印的字符。 當遇到不可打印的字符時,一些實現選擇打印非標准符號,例如笑臉。
如果要打印數字 5,則必須使用字符文字:
char c = '5';
printf("%c", c);
或者使用帶有“幻數”的糟糕風格:
char c = 53; // don't write code like this
printf("%c", c);
這是字符表示的問題。 讓我們先從相反的開始。 可以將char
提升為int
,但如果這樣做,您將獲得字符的表示(其code )。 假設您使用 ASCII:
char c = '5';
int i = c; // i is now 0x35 or 53 ASCII code for '5'
您的示例正好相反,5 可以用字符表示,因此定義了result[count] = k
(即使您應該收到可能被截斷的警告),但代碼 5 的 ASCII 字符是控制代碼 ENQ,將是在 Windows 系統上使用代碼頁 850 或 437 打印為♣
。
進行轉換(int) 5
-> (char) '5'
的半可移植(未指定,但已知適用於所有常見體系結構)方法是記住代碼 '0' 到 '9' 是連續的(如是'A'到'Z'和'a到'z'),所以我認為你想要的是:
result[count] = '0' + k;
首先,讓我們稍微清理一下代碼:
int k=5;
char* result = malloc(100);
result[count] = k;
sizeof(char) 在任何平台下總是等於 1 並且你不需要在 C 中轉換 malloc() 的返回值。
這就是說,只要您的count
變量包含 0 到 99 之間的值,您就沒有做錯任何事情。 如果要打印實際字符 '5',則必須分配該字符的 ASCII 值 (53),而不僅僅是數字 5。另外,請記住,如果必須將該字符數組解釋為字符串,你需要用 '\\0' 終止它:
int k=5, i;
char* result = malloc(100);
for (i=0; i<98; i++) {
result[i] = ' ';
}
result[98] = 53;
result[99] = '\0';
printf("%s\n", result);
您嘗試分配的數組中的元素都是一個字符的大小,1 個字節。 int 是 4 個字節,因此您的問題。 如果要將整數存儲在數組中,可以執行以下操作:
int result[100];
其次是存儲價值,但老實說,從你提出問題的方式來看,我不知道這是否真的是你想要做的。 嘗試用您想要完成的內容重新表述帖子。
您是否嘗試將 5 存儲為一個字符?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.