两个阵列的联合交替值?

时间:2016-01-21 09:41:20

标签: c arrays algorithm

我有两个char数组:a,b。我怎样才能创建一个循环" for"新的数组vet,它是两个交替数组a,b?

的并集
#include <stdio.h>

int main(void) {
    char a[] = "BNSIO";
    char b[] = "EISM\a";
    char vet[sizeof(a) + sizeof(b)];
    for (int i = 0; i < (sizeof(a) + sizeof(b)); i++) {

    }
    for (int i = 0; i < (sizeof(a) + sizeof(b)); i++){
        printf("%c", vet[i]);
    }
}

2 个答案:

答案 0 :(得分:2)

你可以试试这个:

for (int i = 0,j=0,k=0; k < (sizeof(a) + sizeof(b) -2);) 
{
    if(i+1<sizeof(a))
    {
        vet[k] = a[i];
        i++;k++;
    }
    if(j+1<sizeof(b))
    {
        vet[k] = b[j];
        j++;k++;
    }       
}
for (int i = 0; i < (sizeof(a) + sizeof(b)-2); i++){
    printf("%c", vet[i]);
}

您需要为空终止字符

减去1

答案 1 :(得分:0)

对于来自两个数组的交替值,请尝试此操作(假设长度相等):

int main()
{
    int i;
    char a[] = "BNSIO";
    char b[] = "EISM\a";
    char vet[sizeof(a) + sizeof(b)];

    for( i = 0; i < sizeof(a); i++) {
        vet[2*i] = a[i];
        vet[2*i+1] = b[i];
    }

    for(i = 0; i < sizeof(vet) ; i++){
        printf("%c", vet[i]);
    }
}