how could we know this is the last element in the array?

arrays, c

Solution

You can simply loop in a reverse order:

for(i = 4; i >= 0; i--)
{
   if(array[i] == 1)
   {
      printf("last 1 found!\n");
      //break or do whatever you want
   }
}

We can further improve the code as follows:

int main(){
    int array[] = {1, 0, 1, 0, 0}, i;   
    for(i=sizeof(array)/sizeof(int)-1; array[i]!=1 && --i;); 
    printf("last 1 found at index = %d\n", i);
    return 1;
}

Codepad.

The second form of code has some additional benefits:

- Include initialization.

- Size independence of array.

- Fast in two ways: Short-circuit behavior of &&, `--i` will be performed when needed.

- Smaller code (removed `if()`, `break`).

Problem

I have the following code: ``` int array[5] = {1, 0, 1, 0, 0}; int i; for(i = 0; i < 5; i++) { if(array[i] == 1) { printf("found one\n"); } } ``` how could we know the second `1` in the `array` is the last `1` we found? I do not mean keep the value of last `1`, what I mean is how should we know the second `1` is the last occurence, no more shows up?

Original source