Ни один из опубликованных ответов, которые я читал, не работает, поэтому я спрашиваю еще раз.
Я пытаюсь скопировать данные string, на которые указывает указатель char, в массив char.
У меня есть функция, которая читает из ifstream в массив символов
char* FileReader::getNextBytes(int numberOfBytes) {
char *buf = new char[numberOfBytes];
file.read(buf, numberOfBytes);
return buf;
}
Затем у меня есть структура:
struct Packet {
char data[MAX_DATA_SIZE]; // can hold file name or data
} packet;
Я хочу скопировать то, что возвращается из getNextBytes(MAX_DATA_SIZE) в package.data;
EDIT: Позвольте мне показать вам, что я получаю со всеми ответами, полученными ниже (memcpy, strcpy, передача в качестве параметра). Я думаю, что ошибка откуда-то еще. Я читаю файл как двоичный (это png). Я буду зацикливаться, пока fstream хорош(), и читать из fstream в buf (который может быть массивом данных). Я хочу увидеть длину того, что я прочитал:
cout << strlen(packet.data) << endl;
Это возвращает каждый раз разные размеры: 8 529 60 46 358 66 156 После этого, по-видимому, не осталось байтов для чтения, хотя файл имеет длину 13 КБ + байт.
strcpy
илиstrncpy
? правильно ли завершен вашbuf
NULL? - person Naveen   schedule 01.03.2012