说我有一个数组
unsigned char digit[] = {0, 1, 2, 3, 4, 5, 6, 7};
然而我想修改数组的一部分,使数组变成类似:
{0, 1, 2, 3, 0, 0, 0, 0}
枚举我想要修改的每个元素并更改它们可能需要一些努力。特别是当我想要改变大量元素时。我知道在Python等语言中我可以使用一行代码做一些事情:
a = np.array([0, 1, 2, 3, 4, 5, 6, 7])
a[4:] = [0, 0, 0, 0]
//a: array([0, 1, 2, 3, 0, 0, 0, 0])
所以我想知道,在C中有类似的方法吗?
答案 0 :(得分:3)
答案 1 :(得分:3)
一个选项是你可以编写一个子程序来实现其他语言提供的界面"在封面下#34;。您可能希望自己了解“VARARGS'使其采用可变数量的参数。
答案 2 :(得分:3)
其他人已经提到使用memset
将数组元素设置为单个值,作为后续问题的一部分,您询问是否可以将某些元素设置为{1, 2, 3, 4}
等特定值。
您可以在此处使用memcpy
来实现这一目标。由于您的类型是unsigned char
,我会保留它,但一般来说,此方法可用于任何类型。
memcpy(&digit[4], ((unsigned char[4]){1, 2, 3, 4}), 4 * sizeof(unsigned char));
您可以看到演示here。
答案 3 :(得分:0)
我认为这可能不是最短的,但你可以轻松做到的只是:
digit[] = {0, 1, 2, 3, 4, 5, 6, 7}; %Having this
a=the number in your vector you want to start making ceros;
n=the lenght of digit;
for(i=a;i=n;i++)
{
digit[n]=0;
}
这是我认为你可以使用的一种方式。 如果你想改变一个特定的
b=position;
digit[b]=c; %Where c is the number you want to put in there.
我希望它对你有用,祝你好运。