【发布时间】:2017-08-09 10:46:28
【问题描述】:
我有一个值数组 x = {0,0,1,2,3,0,0,7,8},我想使用 C 删除零条目。
尝试:
我正在尝试遍历数组中的每个值并检查该条目是否不等于零。如果这个条件为真,那么我正在尝试用原始数组值填充一个新数组。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
int x[] = { 0, 0, 1, 2, 3, 0, 0, 7, 8 };
int i;
int x_upd[100];
for (i = 0; i < 9; i++) {
if (x[i] != 0) {
x_upd[i] = x[i]; // if true, populate new array with value
}
}
for (i = 0; i < 9; i++) {
printf(" Peak updated %d\t", x_upd[i]); //
}
return 0;
}
输出没有给我想要的值{1,2,3,7,8}。相反,我在原来的零位置处得到了垃圾值。
关于我在这里做错了什么有什么建议吗?我需要 else 语句吗?
【问题讨论】:
-
int i, j = 0;...x_upd[j++] = x[i];...for(i=0;i<9;i++)-->for(i = 0; i < j; i++) -
在第二个循环中,您打印值,您认为您会为未初始化的
x_upd元素打印什么?您还需要跟踪新尺寸。 -
这是我还没有完全理解的东西,但我会打印一些对变量地址的引用吗?
-
“我在原来的零位置得到垃圾值。” --> 你期望
x_upd[]的未初始化部分有什么值?