とは言ったものの、簡単なのでパッパと済ますか。簡単な方法は以下の2つ。

1) 構造体を作って各行の文字数を予め構造体内に書き込んでおき、全行を読み終わった時点で
  文字数をキーにしてqsort()に放り込む

2) 各行をとにかく配列に取り込み、全行を読み終わったら以下のような比較関数をqsort()に適用する
sort_func(char* c_1, char* c_2) {
 return strlen(c_1) - strlen(c_2);
}

2)ではstrlen()の呼び出し回数が増えるので速度は低下するが、より単純である。
1)のほうがスマート。