Вывести полные данные указателя char *? - PullRequest
0 голосов
/ 09 апреля 2020

Я новичок в C ++ и хочу показать данные указателя char * перед записью их в файл, но вывод только 5 первых байтов. Я не знаю, что с этим не так. Я использую __android_log_print для отображения журнала.

Это код для записи данных в файл:

enter image description here

Logcat show:

WriteUnbuffered filename = /data/user/0/com.abc.helloleveldb/databases/leveldb/000003.log

WriteUnbuffered size = 37, данные перед шифрованием = �� � -> всего 5 байтов.

, но данные записываются в полный файл, 2 пары данных (test: okok и test1: hello)

enter image description here

Если у вас есть предложения, пожалуйста, помогите мне. Спасибо

1 Ответ

1 голос
/ 09 апреля 2020

Содержимое буфера в data выглядит как двоичные данные и не подходит для передачи в формате %s.

Я бы предложил перебирать каждый символ (байт) индивидуально и вести журнал вместо этого шестнадцатеричное значение, примерно так:

for(size_t i=0; i<size; ++i) {
    LOGD("WriteUnbuffered data[%zu]=0x%02x", i, (data[i])&0xff);
}
...