A1exSun
Advanced Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Чтение файла в буфер и передача: Код: void SendFile(FILE *f, unsigned long size) { // передача файла unsigned long i, n; int j; char *pack; pack = (char *)calloc(C.PackSize,sizeof(char)); // проверил, память выделяется n = size / (unsigned long)C.PackSize; // проверил, делиться правильно for (i = 0; i < n; i++) { fread(&pack,C.PackSize,1,f); // вместо C.PackSize писал 10 и ошибки нет. C.PackSize = 1024, файл 26.* кбайт SendStr(pack,C.PackSize); // проверил memset(pack,0,C.PackSize); // нечего проверять } free(pack); } | На выделенной строке возникает ошибка, точнее MS-DOS полностью рушится Я так понял это из-за того, что после первой записи в pack, следующий раз fread пишет в его конец, т.е. пытается записать данные уже за пределы выделенной памяти, а не в его начало. Как это исправить? | Всего записей: 1871 | Зарегистр. 25-11-2009 | Отправлено: 21:51 01-12-2011 | Исправлено: A1exSun, 22:13 01-12-2011 |
|