从一个大数组中填充一个数组,一次填充两个元素
Populating an array from a large array, two elements at a time
我有一个包含 10 个随机元素的数组,生成方式如下:
for ( j = 0;j<10;j++)
{
file[j] = rand();
printf("Element[%d] = %d\n", j, file[j] );
}
然后我生成一个包含 2 个元素的新数组。数组的值取自上面的数组,并放入包含 2 个元素的数组中。就像下面的代码示例一样:
for(i = packet_count, j = 0; j < 2; ++j, ++i)
{
packet[j] = file[i] ;
++packet_count ;
printf("\npacket: %d", packet[j]);
}
printf("\nTransmit the packet: %d Bytes", sizeof(packet));
输出如下图:
Telosb mote Timer start.
Element[0] = 36
Element[1] = 141
Element[2] = 66
Element[3] = 83
Element[4] = 144
Element[5] = 137
Element[6] = 142
Element[7] = 175
Element[8] = 188
Element[9] = 69
packet: 36
packet: 141
Transmit the packet: 2 Bytes
我想 运行 遍历数组并获取接下来的两个值并将它们放入数据包数组中,依此类推,直到数组中的最后一个元素。
可以运行通过大数组,select复制小数组的值,当j
等于2时将j
归零:
j = 0;
for(i = 0; i < 10; i++) {
packet[j] = file[i];
printf("\npacket: %d", packet[j]);
j++;
if(j == 2) {
j = 0;
printf("\nTransmit the packet: %d Bytes", sizeof(packet));
}
}
使用取模运算符。示例:
for(i = 0; i < 10; ++i)
{
packet[i % 2] = file[i] ;
printf("\npacket: %d", packet[i % 2]);
if(i % 2)
printf("\nTransmit the packet: %d Bytes", sizeof(packet));
}
已经发布了许多有趣的解决方案here.Yet我想再添加一个。您也可以使用 xor 运算符。
c=c^1
在 0 和 1.when c=0,c^1=1
之间翻转 c 的值,当 c=1,c^1=0.
int i,c=0;
for(i=0;i<10;i++)
{
packet[c] = file[i];
printf("\npacket: %d", packet[c]);
if(c==1)
printf("\nTransmit the packet: %d Bytes", sizeof(packet));
c=c^1;
}
希望helps.Happy打码!!
我有一个包含 10 个随机元素的数组,生成方式如下:
for ( j = 0;j<10;j++)
{
file[j] = rand();
printf("Element[%d] = %d\n", j, file[j] );
}
然后我生成一个包含 2 个元素的新数组。数组的值取自上面的数组,并放入包含 2 个元素的数组中。就像下面的代码示例一样:
for(i = packet_count, j = 0; j < 2; ++j, ++i)
{
packet[j] = file[i] ;
++packet_count ;
printf("\npacket: %d", packet[j]);
}
printf("\nTransmit the packet: %d Bytes", sizeof(packet));
输出如下图:
Telosb mote Timer start. Element[0] = 36 Element[1] = 141 Element[2] = 66 Element[3] = 83 Element[4] = 144 Element[5] = 137 Element[6] = 142 Element[7] = 175 Element[8] = 188 Element[9] = 69 packet: 36 packet: 141 Transmit the packet: 2 Bytes
我想 运行 遍历数组并获取接下来的两个值并将它们放入数据包数组中,依此类推,直到数组中的最后一个元素。
可以运行通过大数组,select复制小数组的值,当j
等于2时将j
归零:
j = 0;
for(i = 0; i < 10; i++) {
packet[j] = file[i];
printf("\npacket: %d", packet[j]);
j++;
if(j == 2) {
j = 0;
printf("\nTransmit the packet: %d Bytes", sizeof(packet));
}
}
使用取模运算符。示例:
for(i = 0; i < 10; ++i)
{
packet[i % 2] = file[i] ;
printf("\npacket: %d", packet[i % 2]);
if(i % 2)
printf("\nTransmit the packet: %d Bytes", sizeof(packet));
}
已经发布了许多有趣的解决方案here.Yet我想再添加一个。您也可以使用 xor 运算符。
c=c^1
在 0 和 1.when c=0,c^1=1
之间翻转 c 的值,当 c=1,c^1=0.
int i,c=0;
for(i=0;i<10;i++)
{
packet[c] = file[i];
printf("\npacket: %d", packet[c]);
if(c==1)
printf("\nTransmit the packet: %d Bytes", sizeof(packet));
c=c^1;
}
希望helps.Happy打码!!