char* jname = new char(hClip.clipNameNum);
file.read((char*)jname, hClip.clipNameNum);
cout <<"old name"<<string(jname)<<endl;
char* jname = new char(hClip.clipNameNum);
file.read((char*)jname,sizeof(hClip.clipNameNum));
cout <<"old name"<<string(jname)<<endl;
第一段是正确的,第二段是错误的。我将要读取的长度存入hClip.clipNameNum,但是读取的时候却对其取了sizeof,得到的自然是int的长度,永远为4,而我要读取的长度在这里只有2,导致永远多了两字节,我百思不得其解。但是我又不能简单粗暴的直接-2调整读取位置,因为这里的读取长度不一定是2(如果这里永远是2的话,我可能直接-2了事,应急处理bug 的时候这样做可行)。直到我突然意识到,我为嘛要取sizeof???
错误难度:1
错误的愚蠢程度:5
耗时:1.5h