我有一个带有元素的13x13数组但不是每个元素都是数字。如果它不是一个数字,那么它填充了空格,所以我试图弄清楚如何检查给定索引处是否存在数字。如果存在一个数字,那么如果没有,它会返回循环。这就是我所拥有的:
int *spaceCheck;
int i, Value;
for(i=0;i<169;i++){
spaceCheck = &Array[i];
if(!spaceCheck){
continue;
else
//do this job
}
我可以这样做吗?还有其他更好的检查方法吗?谢谢你的帮助。
它是一个包含169个元素的整数数组。因此,当最初加载数据(数字)时,只有80个元素从文件加载到数组中。数组中的其余空间填充空格(printf(“”))。对不起,感到困惑。
答案 0 :(得分:2)
可能无法始终使用zero
初始化数组元素。您需要做的第一件事是使用默认值初始化它。说0
或-1
或其他什么。然后,您可以按如下方式修改代码:
int *spaceCheck;
int i, Value;
for(i=0;i<169;i++){
spaceCheck = &Array[i];
if(*spaceCheck!=default_value){
continue;
else
//do this job
}
请注意,您还存储了数组元素的引用。如果您想检查其数据,则需要使用dereferencing operator
*
。希望这是你想要的。编写上述代码的简单方法是根本不使用指针。它如下:
int i, Value;
for(i=0;i<169;i++){
if(Array[i]!=default_value){
continue;
else
//do this job
}
答案 1 :(得分:2)
要做你想要的,你需要使用一个表示“没有价值”的标记值,例如:
const int novalue = -1; // or whatever you want, as long as it is unique
int Array[169];
for (i=0;i<169;i++)
Array[i] = novalue;
...
for(i=0;i<169;i++){
Value = Array[i];
if(Value == novalue)
continue;
//do this job
}
否则,在结构上创建一个数组而不是整数:
struct sValue
{
char valid;
int value;
};
sValue Array[169];
for (i=0;i<169;i++)
Array[i].valid = 0;
...
for(i=0;i<169;i++){
if(Array[i].valid == 0)
continue;
Value = Array[i].value;
//do this job
}
答案 2 :(得分:0)
我想在这句话中:if(!spaceCheck)
你正在检查变量的地址是否为真,你没有将它与任何值进行比较。例如,if((*spacecheck)!=Array[i][j])//considering you have a 2-D array)
在逻辑上是正确的根据您的问题。以下代码可能会清除您的概念,它基于类似于您在此提供的条件,
int *spaceCheck;
int i,j, Value;
for(i=0;i<13;i++){
for(j=0;j<13;j++){
spaceCheck=&array[i][j];//array is 2-D
if(*spaceCheck!=array[i][j])
continue;
else
//do this job
}}