>>85
>if((i = strlen(str) < B_MAX-1))
括弧の位置がおかしい。「i = strlen(str)」を括弧でくくらないと。
strのバッファサイズなのでB_MAXじゃ無くてS_MAX。

「strlenの返す値は'\0'を含まない」
-1じゃなくて-2でないとオーバーフローする。
-1にしたい(改行こみで50文字までの文字列にしたい)なら、
char bigstr[B_MAX+1]={0};
char str[S_MAX+1]={0};

>str[i-1] = '\n';
最後の1文字が消えちゃう。
strcatで文字列"\n"を追加する方が楽かも。