足りない脳みそで思いつくのはこれくらいかなあ。
ぶっちゃけ>>882のgoto使う奴が一番素直で分かりやすいと思うが。

/*
配列をリングバッファに見立てて、idをキーに検索を行う。
ただし、何番目の要素から検索を開始するか指定できるようにする。
指定idを見つけたらその要素にdataの値を設定し、その要素へのポインタを返す。
見つからなければNULLを返す。
*/
typedef struct{int id; int data;} item_t;

item_t ring_buffer[1000];

item_t *hoge(int id, int data, int start)
{
 item_t *p_end = ring_buffer + sizeof(ring_buffer)/sizeof(ring_buffer[0]);
 item_t *p_start = ring_buffer + start;
 item_t *p;

 for (p = p_start; p != p_start; ++p) {
  if (p->id == id) {
   p->data = data;
   return p;
  }
  if (p == p_end)
   p = ring_buffer;
 }

 return NULL;
}