Здравствуйте, Антипа, Вы писали:
А>Здравствуйте, irbis3003, Вы писали:
I>>is.gcount();
А>Точно? У меня есть подозрения, что вы использовали функции для работы с '\0'-завершёнными строками.
I>>Ну а вообще — нетрудно выгрузить полученные байты снова в файл или мемо и посмотреть что считали.
А>Вы это делали? Покажите код.
А>Я проверил, все работает так, как и должно:
А>А>#include <fstream>
А>#include <iostream>
А>//#include "stdafx.h"
А>using namespace std;
А>int main(int argc, char *argv[])
А>{
А> static unsigned char InBlock[16];
А> ifstream is("binary.bin", ios::binary);
А> is.read((char*) InBlock, 16);
А> cout << is.gcount() << " bytes read\n";
А> is.close();
А> for (int i=0; i<16; i++) cout << (int)InBlock[i] << " ";
А> cout << "\n";
А> return 0;
А>}
А>
А>>>bin-read.exe binary.bin
А>16 bytes read
А>49 50 51 52 53 54 55 56 57 0 97 98 99 100 101 102
А>
А>Файл binary.bin я сделал руками в 16-ричном редакторе. Там в середине нулевой символ.
Сделал так же (хотя до этого мой код мало чем от этого отличался), все получилось. Весьма благодарен!
Здравствуйте, irbis3003, Вы писали:
I>Сделал так же (хотя до этого мой код мало чем от этого отличался), все получилось. Весьма благодарен!
dabeat_bf указал же на ошибку в коде (
strlen):
InBlockLen = strlen(InBlock)*sizeof(char);
Здравствуйте, _niko_, Вы писали:
__>Здравствуйте, irbis3003, Вы писали:
I>>Сделал так же (хотя до этого мой код мало чем от этого отличался), все получилось. Весьма благодарен!
__>dabeat_bf указал же на ошибку в коде (strlen):
__>__>InBlockLen = strlen(InBlock)*sizeof(char);
__>
Дело не в этом — вместо длины строки в виде переменной я пробовал руками писать ее значение.
Честно говоря, даже сам не совсем понял что именно в коде изменилось, что привело к работоспособности.
Буду разбираться.