我将从代码本身开始解释我的问题
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()
,但显然我用错了,或者它不符合我的目的
答案 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终止符保留的。然后,您可以使用它来循环复制相关字符到新阵列。
如果这没有意义,请告诉我,我会更新它以解释更多内容!