このプログラムは指定された行数を
最後の行からさかのぼって出力することを目的に書きました。
int a = count + 1 - gyo;
はb>aのときから表示させることにより
最後の行からさかのぼって指定された行を表示させようとしています。

if(b >= a)
{
printf("%s\n", buffer);