[英]How to split an array in two parts (from start to x and from x to end) in C?
我環顧四周,但是有很多不同的答案,並且C令人困惑,所以我想問一下我的具體問題。
所以說我有一個像這樣的數組:
[ls, -l, SPLIT, wc, -w]
所以我想將此數組拆分為兩個不同的(char)數組,如下所示:
[ls, -l] [wc, -w]
我是否使用realloc
和malloc
?
你不啃老族,以realloc
,但你必須malloc
兩倍。 這是大小為10的字符數組的位置5的一個示例。
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;
使用數組,現在可以釋放:
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;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.