引数が 26 個の関数呼び出しってどうよ

数ヶ月前に書いたコードを保守しようとしたら、 こんなのが出てきてウケた。

  unsigned hits[24];
  ...
  if (sscanf(buf,
             "%u,%u,%u,%u,%u," "%u,%u,%u,%u,%u,"
             "%u,%u,%u,%u,%u," "%u,%u,%u,%u,%u,"
             "%u,%u,%u,%u",
             hits +  0, hits +  1, hits +  2, hits +  3, hits +  4,
             hits +  5, hits +  6, hits +  7, hits +  8, hits +  9,
             hits + 10, hits + 11, hits + 12, hits + 13, hits + 14,
             hits + 15, hits + 16, hits + 17, hits + 18, hits + 19,
             hits + 20, hits + 21, hits + 22, hits + 23)
      != 24) {
    return -1;
  }
  ...

24時間分のカンマ区切りの文字列を unsigned [24] にロードする。

1日が25時間になることなんてないし、このコードは読みやすくてメンテナンス性は高いと思うんだけど、なんか常識に挑戦してる気がする。

もっといいやり方あるのかな。