我不知道如何从存储在另一个数组中的索引元素中清除一个数组。我需要完成以下由main(…)和function组成的C程序
void clear_MSBs( unsigned char dest_array[], unsigned char array_indices []).
代码开头:
#define N 8
#define M 5
int main()
{
unsigned char dest_array[N] = {248,249,250,251,252,253,254,255};
unsigned char array_indices[M] = {0,2,3,6,7}; // contains M=5 elements
clear_MSBs(dest_array, array_indices);
// print the modified dest_array[] here
return 0;
}
注意:保证第二个数组中存储的所有索引都在
允许范围。
我将衷心感谢您的帮助。
最佳答案
如果通过清洗,意味着将元素标记为无效(这可能是您想要的),则可以循环遍历indexs数组,然后将indexs数组的第i个元素用作目标数组的索引。
例:
#include <stdio.h>
#define N 8
#define M 5
void clear_MSBs(unsigned char dest_array[], unsigned char array_indices [])
{
for(int i = 0; i < M; ++i)
dest_array[array_indices[i]] = 0;
}
int main()
{
unsigned char dest_array[N] = {248,249,250,251,252,253,254,255};
unsigned char array_indices[M] = {0,2,3,6,7}; // contains M=5 elements
clear_MSBs(dest_array, array_indices);
// print the modified dest_array[] here
for(int i = 0; i < N; ++i)
if(dest_array[i] != 0)
printf("%d ", dest_array[i]);
printf("\n");
return 0;
}
输出:
249252253
PS:代码假定无效元素的值为0。