在C中检查是否存在int?

时间:2013-06-20 03:59:34

标签: c pointers

我有一个带有元素的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(“”))。对不起,感到困惑。

3 个答案:

答案 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
}}