我读过的所有答案都不可行,所以我再次提问。
我正试图将由char指针指向的字符串数据复制到char数组中。
我有一个函数,可以从ifstream读取数据并将其存储到char数组中。
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)返回的内容复制到packet.data中; 编辑:让我展示一下我从所有下面得到的答案中获得的内容(memcpy、strcpy、作为参数传递)。我认为错误来自其他地方。我正在以二进制格式读取文件(它是一个png文件)。当fstream好时,我会循环并从fstream中读取到buf中(可能是数据数组)。我想看一下我已经读取的内容的长度 :
cout << strlen(packet.data) << endl;
这会每次返回不同的大小: 8 529 60 46 358 66 156 之后,虽然文件长度超过13K字节,但似乎没有剩余字节可读取。
strcpy
或strncpy
吗?你的buf
是否正确地以 NULL 结尾? - Naveen