Помогите пожалуйста
Считываю с файла с 75 байтами
len=fread(M,1,64,org);
В буфер записывается все 64, но len возвращает 40
Скажите пожалуйста в чём может быть ошибка
Функция fread возвращет неверное значение
Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain
из мана.If an error occurs, or the end of the file is reached, the return value is a short item count (or zero).
fread() does not distinguish between end-of-file and error, and callers must use feof(3) and ferror(3) to determine which occurred.
Если бы ты скинул работающий код, в котором повторяется описаная ситуация и пример файла с которого считываешь, МБ можно было помочь лучше )
Приглашаю на свой блог о программировании: pro-prof.com
Вот функция:
До этого org открывал:
Файл прикрепил)
Код: Выделить всё
void FileWork(unsigned char K[8][16], FILE* org, FILE* conc){
unsigned char M[64];
int len;
while(len=fread(M,1,64,org)){
PolyPod(K,M,len);
fwrite(M,1,len,conc);
}
}
Код: Выделить всё
FILE* org=fopen("D:\\text1.txt","rb");
- Вложения
-
[Расширение txt было запрещено, вложение больше недоступно.]
я просил минимальный работающий код, который показывает что что-то там работает не так.
что делает ваш полипод я понятния не имею, может быть дело в нем?
Минимальный пример вот:
и все работает, на экран выводит 64 (столько байт считано и записано) и в файл копируется тоже ровно 64 байта.
скриншот прикрепил
что делает ваш полипод я понятния не имею, может быть дело в нем?
в прикрепленном файле 117 байтСчитываю с файла с 75 байтами
в примере вы считываете в цикле, т.е. мб первый раз считывается 64, в во второй раз то, что осталось, МБ там и осталось 40 (в том файле, накотором вы реально это проверяли)В буфер записывается все 64, но len возвращает 40
Минимальный пример вот:
Код: Выделить всё
#include <cstdlib>
#include <cstdio>
int main() {
FILE *org = fopen("text1.txt","rb")
, *conc = fopen("text2.txt", "w+b");
unsigned char M[64];
int len;
len = fread(M, 1, 64, org);
fwrite(M, 1, len, conc);
printf("%d\n", len);
}
скриншот прикрепил
Приглашаю на свой блог о программировании: pro-prof.com
имхо автора топика сбила разная система счисления - он пытается считать 64, а в дебагере видит, что считалось 40. Только вот 40 в шестнадцатиричной системе счисления = 64 в десятичной.
16-ричная система..
Протупил так протупил
Спасибо за то, что откликнулись)
Протупил так протупил
Спасибо за то, что откликнулись)