0
我環顧四周,但有很多不同的答案,C很混亂,所以我寧願問我的具體問題。如何在C中將數組分成兩部分(從開始到x,從x到結束)?
所以我們可以說我有一個這樣的數組:
[ls, -l, SPLIT, wc, -w]
所以我想這個數組分成兩個不同的(焦炭)陣列是這樣的:
[ls, -l] [wc, -w]
我用realloc
和malloc
?
我環顧四周,但有很多不同的答案,C很混亂,所以我寧願問我的具體問題。如何在C中將數組分成兩部分(從開始到x,從x到結束)?
所以我們可以說我有一個這樣的數組:
[ls, -l, SPLIT, wc, -w]
所以我想這個數組分成兩個不同的(焦炭)陣列是這樣的:
[ls, -l] [wc, -w]
我用realloc
和malloc
?
您不需要realloc
,但您需要兩次malloc
。這是在大小10
char * array = malloc (sizeof(char) * 10);
memcpy (array, data, sizeof(char) * 10);
char * split_part_1 = array;
size_t split_part_1_len = 5;
char * split_part_2 = malloc (sizeof(char) * (10 - 5));
memove (split_part_2, array + 5, sizeof(char) * 5);
size_t split_part_2_len = 5;
的字符的排列的5位使用陣列的拆分爲例,現在釋放:
free (split_part_1);
free (split_part_2);
這樣
#include <stdio.h>
#include <string.h>
#define separator ", SPLIT, "
int main(void) {
char original[] = "ls, -l, SPLIT, wc, -w";
char part1[sizeof original], part2[sizeof original];//or allocate by malloc
char *d = part1, *s = original;
char *p = strstr(s, separator);
while(s < p){
*d++ = *s++;
}
*d = 0;
strcpy(part2, p + strlen(separator));
printf("[%s] [%s]\n", part1, part2);
return 0;
}
你想其中一個數組是原始數組?然後兩個。否則,如果你想保持原始數組的原始狀態,那麼你需要分配兩個新的數組,爲此你可以使用任何一個函數。 –
@Someprogrammerdude我想保留原始數組,是的。 – mythic
你的例子不是C.目前還不清楚你正在談論什麼樣的數組/數組。例如,是字符串的逗號部分,還是僞碼數組元素分隔符?更好地提供一個C例子。 – alk