簡體   English   中英

如何在C中將數組分為兩部分(從開始到x和從x到結尾)?

[英]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]

我是否使用reallocmalloc

你不啃老族,以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.

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