先日から、C言語の勉強を始めました。
現在for文の例題をやっているのですが、もなかなか綺麗に書けません。
諸兄方に添削をお願いできますと有難いです。

内容:
dataというint型配列に、正数のデータがあり、エラー(-1)が混ざっています。
それを除外対象として、s番目の値を出力するプログラムを書いています。
(s=0 結果=1, s=1 結果=2, s=5 結果=6, s=7 結果=8)

----------------------私の書いたプログラム----------------------
#include <stdio.h>

int data[] = {-1, 1, 2, 3, 4, -1, 5, -1, -1, 6, 7, 8, 9};
int s=7; /*簡単に考えるため、dataの添え字が無効にならない範囲と仮定*/

main()
{
  int i, j;

  for (i=j=0; i<=s; ++i, ++j) {
    while (data[j] == -1) {
      j++;
    }
  }
  j--;

  printf("result = %d\n", data[j]);
}
--------------------------------------------------------------

無い知恵絞ったのですが、ループ内で完結せずに j-- が外に出ています。
ソートなどの難しい問題をやる場合には、ループ内での比較処理はよく使われると
思うのですが、このプログラムももっとシンプルになりませんでしょうか?
定石のような書き方がありましたら、教えて下さい。よろしくお願い致します。