fgets+LINE_MAX, или познаковый ввод… как быть?

Недавно мною была поставлена перед Mikant просьба - написать быстренько на Си++ функцию/просто кусок кода для наладки построчного(line input) ввода данных из файла в массив. Он все сделал быстро и точно, но получился сравнительно объемный кусочек (строк, эдак, около 20-25 с двумя циклами).

Недавно же (сегодня) наткнулся на просторах глобальной сети на конструкцию вида (восстанавливал по памяти):


code:

#include
...
char line[LINE_MAX];
FILE *file_to_read;
...
while(fgets(line, LINE_MAX, file_to_read){
обработка данных и заполнение массива
}

Исправная работа данного варианта гарантируется только в POSIX-совместимых ОС.

Собственно, сабж (С)... Если кто-нибудь знает, подскажите, пожалуйста, насколько сильно разнятся данные способы ввода, действительно ли получается, что в моем (POSIX) случаем при вводе в буфер попадает куча ненужных символов, и что данный способ при малых объемах вводимой информации (до 3-5Кб в сумме, длина строки файла >=60, разделитель - \n) действильно не имеет преимущества по скорости обработки/ввода, чем вариант с апуеср,

Ситуация такова: из одного файла вводятся паттерны regex и некая строка char *message проверяется на совпадение со паттерном по регулярке из строки файла (она же - элемент массива, т.к. при инициализации программы все паттерны грузятся в екий массив и висят в памяти в процессе работы проги).

Буду рад комментам.

п.с.: Mikant, обзовешь меня пьянью, или как-нить еще - обижусь, ибо приложение ориентировано на linux, соотв и поддержка PCRE будет, и нормальная поддержка POSIX-лимитов тоже, не то, что в твоем VS2005... .NET IDE и линукс - не совместимы. Ну... Может если только через mono/libmono.