memcpy
От: scsnow  
Дата: 16.10.08 07:17
Оценка:
Есть функция memcpy(dest,src,n). Она копирует n байт src по адресу dest.
dest = char *buffer
src = buf[1024]
Я читаю файл кусками по 1024 байт и помещаю в buf. Потом эти куски подцепляю к buffer и хочу получить буфер (buffer), содержащий содержимое файла. Как реализовать это с помощью memcpy?

Должно быть что-то типа такого:
memcpy(*(&buffer+[текущее смещение в buffer'е]),buf,[кол-во прочитанных байт из файла]), но не работает...
Re: memcpy
От: Bell Россия  
Дата: 16.10.08 07:23
Оценка:
Здравствуйте, scsnow, Вы писали:

S>Есть функция memcpy(dest,src,n). Она копирует n байт src по адресу dest.

S>dest = char *buffer
S>src = buf[1024]
S>Я читаю файл кусками по 1024 байт и помещаю в buf. Потом эти куски подцепляю к buffer и хочу получить буфер (buffer), содержащий содержимое файла. Как реализовать это с помощью memcpy?

S>Должно быть что-то типа такого:

S>memcpy(*(&buffer+[текущее смещение в buffer'е]),buf,[кол-во прочитанных байт из файла]), но не работает...

Для начала приведи более-менее законченый пример.
По приведенным кускам судить о чем-то очень проблематично.
Любите книгу — источник знаний (с) М.Горький
Re: memcpy
От: alzt  
Дата: 16.10.08 07:32
Оценка:
Здравствуйте, scsnow, Вы писали:

S>Должно быть что-то типа такого:

S>memcpy(*(&buffer+[текущее смещение в buffer'е]),buf,[кол-во прочитанных байт из файла]), но не работает...

Зачем здесь взятие адреса и разименование указателя?
Re: memcpy
От: AKh  
Дата: 16.10.08 07:32
Оценка:
Здравствуйте, scsnow, Вы писали:

S>Есть функция memcpy(dest,src,n). Она копирует n байт src по адресу dest.

S>dest = char *buffer
S>src = buf[1024]
S>Я читаю файл кусками по 1024 байт и помещаю в buf. Потом эти куски подцепляю к buffer и хочу получить буфер (buffer), содержащий содержимое файла. Как реализовать это с помощью memcpy?

S>Должно быть что-то типа такого:

S>memcpy(*(&buffer+[текущее смещение в buffer'е]),buf,[кол-во прочитанных байт из файла]), но не работает...


memcpy(buffer+[текущее смещение в buffer'е], buf, [кол-во прочитанных байт из файла]);
Re[2]: memcpy
От: K13 http://akvis.com
Дата: 16.10.08 07:44
Оценка:
AKh>
AKh>memcpy(buffer+[текущее смещение в buffer'е], buf, [кол-во прочитанных байт из файла]);
AKh>


Только надо не забыть, что buffer должен указывать на отдельный выделенный буфер достаточного размера.
Одной записи
char *buffer;
для этого недостаточно.
Re: memcpy
От: codelord  
Дата: 16.10.08 08:38
Оценка:
Здравствуйте, scsnow, Вы писали:

S>Есть функция memcpy(dest,src,n). Она копирует n байт src по адресу dest.

S>dest = char *buffer
S>src = buf[1024]
S>Я читаю файл кусками по 1024 байт и помещаю в buf. Потом эти куски подцепляю к buffer и хочу получить буфер (buffer), содержащий содержимое файла. Как реализовать это с помощью memcpy?

S>Должно быть что-то типа такого:

S>memcpy(*(&buffer+[текущее смещение в buffer'е]),buf,[кол-во прочитанных байт из файла]), но не работает...

вот пример, проблем небыло

#include <stdio.h>
#include <string.h>
const size_t small_buff = 20;
const size_t big_buff = 1024;
int main() {

 char readbuffer[small_buff];
 char bigbuffer[big_buff];

 FILE *infile = fopen( "main.c", "rb" );
 size_t read_len = 0;
 size_t file_len = 0;

  if( infile == NULL ) return 0;
  while( read_len = fread( readbuffer, 1, small_buff, infile  ) )
  {
        memcpy( bigbuffer + file_len, readbuffer, read_len );
        file_len += read_len;
  }

 FILE *outfile = fopen( "result.c", "wb" );
 fwrite( bigbuffer, 1, file_len, outfile );

 fclose( infile );
 fclose( outfile );
 return 0;
}
Re: memcpy
От: Аноним  
Дата: 16.10.08 08:50
Оценка: -4
Доколе ж будут читать из файлов в какие-то там буфера. А CreateFileMapping и mmap на что?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.