清除不需要的值

时间:2017-04-15 21:00:12

标签: c arrays

我将从代码本身开始解释我的问题

void main()
    {
       char arr[50];
       for ( int i = 0; i < sizeof(arr); i++ )
           arr[i] = '0';

到此为止,arr持有的每个值都是'0'

现在让我们说我用字符填充了一些arr值,并得到以下内容

arr = { '0', '0', 'Z', '0', 'A', 'b', 'Q', '0', '0', ..... '0' };

现在,我想摆脱Q之后的所有零,因为它是最后一个不为零的值。

所以当我printf ( " %s ", arr);时,我只会得到arr持有的所有值,直到Q

我尝试使用memset(),但显然我用错了,或者它不符合我的目的

1 个答案:

答案 0 :(得分:0)

从数组的最后一个索引开始并递减,直到找到不是0的字符。这是数组中不是0的最后一个字符。为了完全摆脱它们,我的建议是创建一个新的数组。

这是一个例子,

注意:arrayLen是数组的长度:

int index;
for (i = arrayLen - 1; i >= 0; i--)
{

    if (array[i] != '0')
    {
        index = i;
        break;
    }
 }

char newArray [index+2];
for (i = 0; i < index+1; i++)
{
    newArray[i] = array[i];
}
newArray[index+1] = '\0'

新字符串的字符串长度成为0 + 2 + 2之前数组中最后一个字符的索引,因为其中一个索引是为null终止符保留的。然后,您可以使用它来循环复制相关字符到新阵列。

如果这没有意义,请告诉我,我会更新它以解释更多内容!