Здравствуйте, slash_48rus, Вы писали:
_>Хай всем. Пишу вроде не первый год на си, но че-то седня возникла проблемка... Имеется файл, состоящий из множества бмп файлов, записанных в нем друг за другом. Мне это дело надо запхать в память (массив). Файл около 12 метров, массив сделан на 32. Пишу следующее%
_>FILE *fp1, fp2;
_>unsigned int dump[33554432]; _>fp1 = fopen ("dump.bmp", "r"); _>fp2 = fopen ("out.tmp", "w");
_>unsigned int i = 0; _>char c;
_>while (!feoef(fp1)) _>{ _> c = fgetc(fp1); _> dump[i] = c; _> fputc (c, fp2); _> fflush (fp2);// на всякий... _> i++; _>} _>fclose(...);
_>Все! Злосчастные 12 метров никак у мя не выходят, иногда бОльшая часть файла заполняется 0хF-ками. Куда копать, подскажите плиииз, а то срочно надо...
_>ЗЫ: тип массива попробую ща поменять, но не уверен что заработает
По-моему кто-то над кем-то решил поиздеваться... Почти в каждой строчке ошибка/глупость
Или это олимпиада по "странному" программированию?
Хай всем. Пишу вроде не первый год на си, но че-то седня возникла проблемка... Имеется файл, состоящий из множества бмп файлов, записанных в нем друг за другом. Мне это дело надо запхать в память (массив). Файл около 12 метров, массив сделан на 32. Пишу следующее%
А вообще стоит наверно пооптимальнее както сделать... Если под конкретную ос — заюзать ее механизм отображения файлов в память... Или читать как нить не по 1 байту
Здравствуйте, slash_48rus, Вы писали:
_>Хай всем. Пишу вроде не первый год на си, но че-то седня возникла проблемка... Имеется файл, состоящий из множества бмп файлов, записанных в нем друг за другом. Мне это дело надо запхать в память (массив). Файл около 12 метров, массив сделан на 32. Пишу следующее%
Мда. Автор пишет на Си не первый год, а нулевой.
FILE *fp1, *fp2;
unsigned int dump[33554432]; //Что это? Твой ИНН? 32М = 32 * 1024*1024 или 1<<25
fp1 = fopen ("dump.bmp", "rb");
fp2 = fopen ("out.tmp", "wb");
//В программе куча опечаток, но проблема, скорее всего, в этих самых буквах 'b'unsigned int i = 0;
char c;
while (!feof(fp1))
{
c = fgetc(fp1);
dump[i] = c; //не объявлено...
fputc (c, fp2);
fflush (fp2);// на всякий... Не надо так делать!
i++;
}
fclose(...);
Тот, кто желает, но не делает, распространяет чуму.
29 августа 2006 00:56 slash_48rus wrote:
> Хай всем. Пишу вроде не первый год на си, но че-то седня возникла > проблемка... Имеется файл, состоящий из множества бмп файлов, записанных в > нем друг за другом. Мне это дело надо запхать в память (массив). Файл > около 12 метров, массив сделан на 32. Пишу следующее% > > FILE *fp1, fp2; > > unsigned int dump[33554432]; > fp1 = fopen ("dump.bmp", "r"); > fp2 = fopen ("out.tmp", "w"); > > unsigned int i = 0; > char c; > > while (!feoef(fp1)) > { > c = fgetc(fp1); > dump[i] = c; > fputc (c, fp2); > fflush (fp2);// на всякий... > i++; > } > fclose(...); > > Все! Злосчастные 12 метров никак у мя не выходят, иногда бОльшая часть > файла заполняется 0хF-ками. Куда копать, подскажите плиииз, а то срочно > надо... > > ЗЫ: тип массива попробую ща поменять, но не уверен что заработает
Ты ложишь char в неинициализированный int.
Здравствуйте, volk, Вы писали:
V>Здравствуйте, slash_48rus, Вы писали:
_>>Хай всем. Пишу вроде не первый год на си, но че-то седня возникла проблемка... Имеется файл, состоящий из множества бмп файлов, записанных в нем друг за другом. Мне это дело надо запхать в память (массив). Файл около 12 метров, массив сделан на 32. Пишу следующее%
V>Мда. Автор пишет на Си не первый год, а нулевой.
Эт что... Видели б вы как у нас студент подсчитывал размер файла. Ага, fgetc считал.
Здравствуйте, trophim, Вы писали:
T>Здравствуйте, volk, Вы писали:
V>>Здравствуйте, slash_48rus, Вы писали:
_>>>Хай всем. Пишу вроде не первый год на си, но че-то седня возникла проблемка... Имеется файл, состоящий из множества бмп файлов, записанных в нем друг за другом. Мне это дело надо запхать в память (массив). Файл около 12 метров, массив сделан на 32. Пишу следующее%
V>>Мда. Автор пишет на Си не первый год, а нулевой.
T>Эт что... Видели б вы как у нас студент подсчитывал размер файла. Ага, fgetc считал.
Тю! Чего же здесь оригинального? Вот я ( ) в свое время определял размер файла так: вызывал fread, передавал ему огргмный буфер и смотрел на возвращаемое значение.
Эх, молодость, молодость... (с) Поручик Ржевский.
Тот, кто желает, но не делает, распространяет чуму.
Здравствуйте, volk, Вы писали:
V>Здравствуйте, trophim, Вы писали:
T>>Здравствуйте, volk, Вы писали:
V>>>Здравствуйте, slash_48rus, Вы писали:
_>>>>Хай всем. Пишу вроде не первый год на си, но че-то седня возникла проблемка... Имеется файл, состоящий из множества бмп файлов, записанных в нем друг за другом. Мне это дело надо запхать в память (массив). Файл около 12 метров, массив сделан на 32. Пишу следующее%
V>>>Мда. Автор пишет на Си не первый год, а нулевой.
T>>Эт что... Видели б вы как у нас студент подсчитывал размер файла. Ага, fgetc считал.
V>Тю! Чего же здесь оригинального? Вот я ( ) в свое время определял размер файла так: вызывал fread, передавал ему огргмный буфер и смотрел на возвращаемое значение.
V>Эх, молодость, молодость... (с) Поручик Ржевский.
Логично.
Обращение к системному вызову семейства fstat приведет к несдаче лабы.
Сужу по написанным мною нескольким лабам для студентов (мелкой сестре и пр) МИФИ.
Преподам не нужны хорошие решения. Им нужны те решения, которые они подразумевали при составлении задачи.
И это в общем-то верно (был тут пол года назад, если не больше, спор про методы сортировки. Нет препода, который за qsort поставит зачет — будте добры, реализуйте сами).
asdfghjkl wrote:
> V>unsigned int dump[33554432]; *//Что это? Твой ИНН? 32М = 32 * 1024*1024 или 1<<25* > V>
> Нашел за что критиковать! В "свободном ПО" встречаются такие перлы: