如何在C中打印空数组元素/跳过数组元素?

时间:2011-12-11 11:22:26

标签: c arrays

所以我有3个int类型数组,A,B和C.程序检查数组A元素是否为素数,如果数字是数组中的素数,它会被复制到数组B,如果不是数组C.后来它打印所有三个阵列。

这是有问题的代码:

    if(onalg)
    {
    B[i]=A[i];  
    }
    else
    {
    C[i]=A[i]; 
    }

然后使用qsort对数组B和C进行排序(完成此操作)。 毕竟它必须打印所有这样的数组:

for(i=0;i<n;i++)
{
    printf("%d        %d        %d\n", A[i],B[i], C[i]);
}

如何在阵列中打印空白点?目前,当B [i] = A [i]时,它会在数组C [i]中打印一些随机数;当C [i] = A [i]时,它会在数组B [i]中打印。

3 个答案:

答案 0 :(得分:1)

你不能。
您需要为数组成员分配一些值,表明它未初始化,然后检查该值并在打印时将其视为空白。

if(onalg)
{
    B[i]=A[i];  
    C[i]= //Some place holder value indicating unfilled;
}
else
{
    C[i]=A[i]; 
    B[i]= //Some place holder value indicating unfilled;
}

答案 1 :(得分:1)

在开始填充数组之前初始化数组BC(例如,使用memset),或者在每个条件中设置它们。

if(onalg)
{
    B[i]=A[i];  
    C[i]=-1;  // or some other constant
}
else
{
    C[i]=A[i]; 
    B[i]=-1;  // or some other constant
}

如果你没有常量可以用作“守卫”,可以考虑使用另外两个正确初始化的数组来存储BC中的索引。是否设定。

您需要在显示代码中使用更多逻辑,以便为“未设置”值打印空白。

答案 2 :(得分:0)

CString strA, strB, strC;

for(i=0;i<n;i++)
{
    if (A.GetLength() > i+1)
        strA = Format(%d, A[I]);
    else
        strA = "";

    if (B.GetLength() > i+1)
        strB = Format(%d, B[I]);
    else
        strB = "";

    if (C.GetLength() > i+1)
        strC = Format(%d, C[I]);
    else
        strC = "";

    printf("%s        %s        %s\n", strA, strB, strC);
}