Есть ли способ, с помощью которого можно избежать перезаписи массива? В моей реализации я должен написать данные в буфер/массив фиксированного размера, скажем buff[100]
, и будет использовать buff[100]
всякий раз, когда я хочу получить данные o/p, я напишу buff[100]
(т. Е. Вы снова будете использовать тот же buff[100]
) в следующий раз Я использую buff[100]
, он должен добавить данные.Избегайте перезаписи на массиве
1
A
ответ
2
Поддержание индекса в массиве. Когда длина данных, которые вы хотите записать плюс индекс, больше или равна 100, выпишите буфер и данные. В противном случае переместите данные в буфер с этим смещением и добавьте длину данных в индекс.
Например, если предположить, что следующие переменные находятся в области:
#define BUFFER_LENGTH 100
char buffer[BUFFER_LENGTH];
int buffer_index;
int output_fd;
Вы могли бы иметь такую функцию:
void write_buffered(char *data, int data_length)
{
if (data_length + buffer_index >= BUFFER_LENGTH) {
write(output_fd, buffer, buffer_index);
write(output_fd, data, data_length);
buffer_index = 0;
return;
}
memcpy(&buffer[buffer_index], data, data_length);
buffer_index += data_length;
}
Это написано C-стиль, потому что я знаю, C лучше C++, но основные принципы звучат. Очевидно, избегайте использования глобальных переменных и изменяйте вызовы write()
на любой вызов, который вы уже используете.
0
Поскольку вы упоминаете C++, почему бы вам не использовать std :: vector или подобный контейнер? Это было бы много проще и менее подвержено ошибкам.
Смежные вопросы
- 1. Избегайте перезаписи содержимого конструктора
- 2. Избегайте перезаписи надписей AZURE на сервере
- 3. Избегайте перезаписи файла на Solaris OS
- 4. Избегайте перезаписи текстового файла в R
- 5. Избегайте потери перевода при перезаписи блока
- 6. Избегайте дублирования строки в массиве
- 7. Push-вызов в Perl-массиве перезаписи
- 8. Добавление значений в массиве без перезаписи
- 9. Избегайте дубликатов в массиве в swift 3
- 10. Избегайте перезаписи файлов S3 с помощью Jquery-Fileupload
- 11. Избегайте двойной ввод элементов в массиве
- 12. Избегайте линии скачка в массиве итерация
- 13. Избегайте дублирования записей пользователя в массиве
- 14. Избегайте выполнения некоторых функций PL/PGSQL путем перезаписи запроса
- 15. Избегайте перезаписи документов mongodb с частично загруженным объектом из morphia
- 16. QFile: Избегайте перезаписи новых данных для существующих файлов
- 17. Перезаписи класса на `Html.EditorFor`
- 18. Избегайте ссылок на libstdC++
- 19. Избегайте функций на Utilities.jsonStringify
- 20. Избегайте перемежения на выходе
- 21. Избегайте анимации на UIView
- 22. Избегайте Запятая в массиве и литералов объектов в $ .expr [ «:»] - Javascript
- 23. Ошибка при перезаписи значения в массиве символов без знака
- 24. Избегайте дублирования элементов в случайном массиве из строки в javascript
- 25. Правила перезаписи IIS для перезаписи на другой веб-сайт
- 26. Apache правило перезаписи (перезаписи URL)
- 27. Кордова перезаписи CSS на платформе
- 28. URL перезаписи на удаленном сайте
- 29. URL-адрес перезаписи на dreamhost
- 30. Избегайте страницы кэширования на IONIC
Если вы ставите периоды после каждого предложения, мы сможем понять вас лучше. Полное предложение и хорошее правописание действительно помогают, особенно когда вы просите о помощи. Зачем кому-то тратить больше сил, отвечая на ваш вопрос, который вы спрашивали? –
код пожалуйста (отформатированный пожалуйста) –