[英]copy two arrays of int to one char* in C
我必須使用 int 數組,例如arr1={0,1,1,0,0}
, arr2={1,0,1,1,1}
並且我需要返回由malloc
創建的 1 個 char* 將顯示像這樣: "01100,10111"
。 當我做 for 循環時它不起作用,我該怎么做?
char* ans = (char*)malloc((size * 2+1) * sizeof(int));
for (int i = 0; i < size; i++)
ans[i] = first[i];
ans[size] = ",";
for (int i = size+1; i < 2*size+1; i++)
ans[i] = second[i];
在眾多問題中:
sizeof(int)
無論如何都是錯誤的,它應該是sizeof(char)
並且因此可以省略( sizeof(char)
始終為1
)。'0'
進行調整。實際上,您首先不需要第二個循環:
char* ans = malloc(size * 2 + 2);
for (int i = 0; i < size; i++)
{
ans[i] = '0' + first[i];
ans[size+1+i] = '0' + second[i];
}
ans[size] = ',';
ans[2*size+1] = 0;
就是這樣。
您的代碼至少有四個問題。
malloc
尺寸不合適,你要使用sizeof(char)
。char* ans = (char*)malloc((size * 2+2) * sizeof(char));
second[size * 2+1] = 0;
integer
數值轉換為char
。for (int i = 0; i < size; i++)
ans[size+i+1] = second[i] + '0';
1.
char* ans = (char*)malloc((size * 2+1) * sizeof(int));
size
是多少? 它沒有在提供的代碼中定義和聲明。01100,10111
,則無需使用字符指針來輸出整數值。2.
for (int i = 0; i < size; i++)
ans[i] = first[i];
size
是多少?first
是什么? 如果它不是指針,則此語句無效。3.
ans[size] = ",";
01100,10111
的輸出中,而不打算將它包含在 int 數組本身的內存中。4.
for (int i = size+1; i < 2*size+1; i++)
ans[i] = second[i];
size
的類型?second
? 如果它不是指針,則此語句無效。5.
要回答問題標題:
這是不可能的。 您不能將兩個數組及其數據復制到指向 char 的指針。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.