c ++ использует буфер в памяти вместо чтения непосредственно файла - PullRequest
0 голосов
/ 23 февраля 2012

У меня есть этот код, который отлично работает:

FILE *fp;
fp = fopen(filename.c_str(), "rb");
char id[5];
fread(id,sizeof(char),4,fp);

Теперь я кое-что изменил в своей архитектуре, и вместо имени файла в качестве полного пути к файлу у меня есть указатель на символ, который содержит данныефайл ... так что мне не нужно читать (fopen и т. д.), а только читать буфер char * ... как я могу это сделать?заранее спасибо

Ответы [ 2 ]

1 голос
/ 23 февраля 2012

Если я правильно понимаю ваш вопрос, вы хотите получить четырехзначный идентификатор где-то посередине буфера.Самый простой способ сделать это - просто скопировать данные в новый буфер и добавить терминатор NULL.

size_t index = 0;
// ...
char id[5];
memcpy(id, &myData[index], 4);
id[4] = '\0';
index += 4;

Затем вы можете последовательно читать буфер, обновляя значение индекса каждый раз, когда что-то читаете.

1 голос
/ 23 февраля 2012
char id[5];
strncpy(id,bfr,4);
id[4]='\0';

Где bfr - буфер с данными вашего файла.

Также настоятельно рекомендуем прочитать главу об указателях и строках в K & R: язык программирования C.

...