两个数组之间的C-AND运算符

时间:2018-12-19 18:12:40

标签: c arrays substring

我想对基于真-假向量的数组进行二次采样:

array1 - ughIuytLikeretC

array2 - ffftfffttttffft

array1 && array2产生以下结果:

array3 - ILikeC

我做了什么:

#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>

int main() {

    char source[16] = "ughIuytLikeretC\0";
    bool mask[15] = {
        false, false, false, true, false,
        false, false, true, true, true,
        true, false, false, false, true,
    };
    char *filtered;
    filtered = malloc(16 * sizeof(char));

    int j = 0;
    int i;
    for (i = 0; i < 15; i++) {
        if (mask[i]) {
            filtered[j] = source[i];
            j += 1;
        }
    }
    filtered[j] = 0;
    printf("%s\n", filtered);
    free(filtered);
}

我的问题是:
这是一个好的方法吗?还是有一个更时尚的方法来实现这一目标?

1 个答案:

答案 0 :(得分:0)

要回答您的问题,这是一种可行的方法。

从算法的角度来看,这是可以接受的解决方案,因为您需要构建额外的阵列。

我忽略了评论中指出的一些小警告。

注意:我会创建一个类似and_arrays(const char a[], const char b[], char result[]);的函数,在该函数中,您需要为result参数传递分配的数组。