Как я могу получить длину массива, который является массивом unsigned char*
?
Это мой массив:
unsigned char ot[] = { 0x68, 0x65, 0x6c, 0x6c, 0x6f, 0x20, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x0, 0x0, 0x0, 0x0, 0x0 };
Я пытался использовать strlen()
так: int length = strlen((char*) ot);
Возвращает мне длину от 11 до первого 0x0
, но что мой массив меняет на это? (проверьте последний элемент)
unsigned char ot[] = { 0x68, 0x65, 0x6c, 0x6c, 0x6f, 0x20, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x0, 0x0, 0x0, 0x0, 0xa1 };
Тогда я получаю еще 11 элементов, как я могу получить "реальную" длину всего массива? Например, если после некоторого элемента 0x0
будут данные.
Например, для:
unsigned char* file_buffer = new unsigned char[BUFFER_SIZE];
fread(file_buffer,sizeof(unsigned char),BUFFER_SIZE,input_file)
Что может быть лучшим решением? Поскольку возвращаемое значение fread()
может варьироваться, если я читаю последний кусок файла, и что если в файле будет 0x0
перед некоторыми данными?