Так. Написал. Чистый С, динамическая память, тестировал.
У меня кнопка "CODE" куда-то делась, просьба к модератору поправить.
--------------------------------------------------------------------
Код
//Тестировано на Borland C++ 3.1, C compiler
//В С операторы new/delete не работают
//Зато там есть malloc и free - плохие аналоги
//Если вы пишете на С++ - НЕ СОВЕТУЮ писать так, глючит и тормозит
==============FILEREAD.C===========================
//В С include не обязательно
#define MAXSTR 4096 //максимум строк файла
#define MAXSYMB 2048//максимум символов с строке
#pragma please //Теоретически ничего не делает. Но если очень попросить...
void main()
{
FILE * input; //Заводим указатель на файл
char * tmpstr;//Заводим временную строку
char *a[MAXSTR]; // Заводим MAXSTR указателей, это не много кушает
long int k; //Переменная
long int i=0;//Счетчик
long int j=0;//Счетчик
tmpstr=malloc(MAXSYMB);
//Даем временной строке до ига места. Не забыть потом отобрать...
input=fopen("C:\\console\\console.bat", "rt");//Открываем файл
if(input==NULL)
//Если файл не открылся - послать кого-то куда-то
{
fclose(input);
printf("\nSorry, can't find the file");
exit(1);
}
i=0;//Она и так 0, но на всякий случай...
while(!(feof(input)))
//Пока липка не спопнется (в смысле файл не кончится)...
{
fgets(tmpstr, MAXSYMB, input);//Читаем строку
if(feof(input))break; //Если файл уже давно кончится - вырубится
//ВНИМАНИЕ! Несмотря на всю странность, эта строка ВАЖНА!
//Ее НЕ СТОИТ удалать
k=strlen(tmpstr);//Считаем, сколько в этой строке байт
a[i]=malloc(k+1);
//Заводим в a на один больше (не забыть про последний 0)
strcpy(a[i], tmpstr);//Переписываем туды эту строку
i++;// Следующий, пожалуйста!
}
free(tmpstr);//Освободить те MAXSYMB байт, которые забрали для tmpstr
fclose(input);//Закрыть файл
flushall();
//Не знаю что делает (что-то типа очистки потоков), но без нее не пашет
for(j=0;j<i;j++)//Распечатка файла
{
printf("\n[%4li]: %s", j, a[j]);
}
}
--
Всем удачи!
: eX106, ты сменил картинку. Здорово!