c - C - 两个数组之间的 AND 运算符
问题描述
我想根据真假向量对数组进行子采样:
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);
}
我的问题是:
这是一种可行的方式,还是有一种更时尚的方式来实现这一目标?
解决方案
要回答您的问题,这是一种可行的方法。
从算法的角度来看,这是一个可接受的解决方案,因为您需要构建一个额外的数组,而您正在这样做。
我忽略了评论中指出的小警告。
注意:我会创建一个函数,类似于and_arrays(const char a[], const char b[], char result[]);
您需要为结果参数传递分配数组的地方。
推荐阅读
- python - FileNotFoundError 与情人节库
- php - 无法从 JWT 解码凭证
- oracle11g - 如何在 Oracle BI 中更新安全凭证
- reactjs - npx create-react-app 使用旧版本运行
- glsl - 用于无绑定使用的 GLSL 中的 Sampler2D 纹理数组
- html - 我可以以某种方式更改要显示的表格的顺序吗?
- database - Grails 应用程序中特定表条目的详细信息
- go - 为什么 pprof heap inuse_space 小于 container_working_set_size?
- node.js - Mkcert 在 Node docker 容器上生成 rootCA,Browsersync over https 不安全
- php - 使用 fsockopen 连接到在另一个 PHP 实例中打开的监听端口