Я пытаюсь проанализировать буфер, состоящий из множества типов данных.
Для примера буфера:
void* buffer = "1111aaaa[another similar buffer][a second similar buffer]1111"
// Buffer is not actually a string, it is just to show (these are bytes that correspond different types).
У меня есть информация о том, как проанализировать этот файл до сих порЯ делал memcpy
для извлечения этих значений, таких как:
memcpy(some_int, buffer, 4);
buffer += 4;
memcpy(some_char_array, buffer, 4);
buffer += 4;
// etc...
// So I am trying to parse the buffer like using a file pointer.
Пока это работает для меня, но у меня было нерегулярное поведение (может быть, просто какая-то другая ошибка, она работаладо сих пор нормально).
Поэтому я провел некоторое исследование, что арифметика указателей в c
опрометчива (хотя GCC в некоторой степени это позволяет). Так как же мне хранить и анализировать эти данные в c?
Некоторые вопросы здесь о SO показали, что вы можете привести их к указателю на символ непосредственно перед увеличением указателя (на определенное количество байтов), но выиграли 't, которые дают неявное предупреждение о преобразовании и увеличивают сложность кода?
Разве нельзя разрешить увеличивать указатель void
, если разработчик точно знает, сколько байтов он / она хочет продвинуть?
Если нет, как я могу сделать это в других методах C?
Edit1: Если хранение данных в char*
не сделает ничего, кроме помощи мнеувеличить указатель, могу ли я просто хранить все данные в char*
и memcpy
оттуда?