gpt4 book ai didi

c++ - 为什么将 char 数组复制到结构中时 memcpy 不起作用?

转载 作者:行者123 更新时间:2023-11-28 00:59:14 25 4
gpt4 key购买 nike

#define buffer 128    

int main(){
char buf[buffer]="";

ifstream infile("/home/kevin/Music/test.mp3",ios::binary);
infile.seekg(-buffer,ios::end);
if(!infile || !infile.read(buf,buffer)){
cout<<"fail!"<<endl;
}
ID3v1 id3;
cout<<sizeof(id3)<<endl;
memcpy(&id3,buf,128);
cout<<id3.header<<endl;
}


struct ID3v1{
char header[3];
char title[30];
char artist[30];
char album[30];
char year[4];
char comment[28];
bool zerobyte;
bool track;
bool genre;

};

当我执行 memcpy 时,它似乎将太多数据推送到 header 字段中。我是否需要遍历每个结构成员并将数据复制进去?我也在使用 C++,但这似乎更像是一种“C”策略。有没有更好的 c++ 方法?

最佳答案

如所有评论中所述(您缺少 '\0' 字符,或者在打印 C 字符串时,运算符 << 期望字符序列以 '\0' 终止)。

尝试:

std::cout << std::string(id3.header, id3.header+3) << std::endl;

这将打印标题字段中的三个字符。

关于c++ - 为什么将 char 数组复制到结构中时 memcpy 不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9649919/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com