【发布时间】:2012-03-19 16:14:25
【问题描述】:
我读过的发布的答案都没有,所以我再问一次。
我正在尝试将 char 指针指向的 string 数据复制到 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 为 good() 时循环并从 fstream 读取到 buf(可能是数据数组)。我想看看我读过的内容的长度:
cout << strlen(packet.data) << endl;
这每次都会返回不同的大小: 8 529 60 46 358 66 156 之后,尽管文件长度为 13K + 字节,但显然没有剩余字节可供读取。
【问题讨论】:
-
或者您可以将一个指向 packet.data 的指针传递给 getNextBytes... 然后将数据直接放入其中,避免创建无关的字符数组和复制。跨度>
-
什么不起作用?你试过
strcpy或strncpy吗?您的buf是否正确终止了 NULL? -
我尝试了这两个,是的,buf 正确地以 NULL 终止。 Buf 可能实际上是从 fstream 文件中读取的二进制数据
-
如果您因缺乏回复或正确解决方案而不得不重新发布,请尝试针对该问题授予赏金