/*这是我以前写的 以字符串形式读进来 二进制写出去*/
int write(char* srcFilename, char* destFilename)
{
FILE *fpSrc;
FILE *fpDest;
fopen_s(&fpSrc, srcFilename, "rb");
fopen_s(&fpDest, destFilename, "wb");
if (fpSrc == NULL)
{
return 0;
}
fseek(fpSrc, 0, SEEK_END);
int size = ftell(fpSrc);
char* buffer = new char[size + 1];
fseek(fpSrc, 0, SEEK_SET);
int readsize = fread(buffer, sizeof(char), size, fpSrc);
if (readsize > size)
{
return 0;
}
buffer[readsize ] = '\0';
fclose(fpSrc);
vector datalist;
std::string str_buff = buffer;
delete buffer;
buffer = NULL;
int start_pos = 0;
int end_pos = str_buff.find_first_of('\n', start_pos);
start_pos = end_pos + 1;
while (end_pos != -1)
{
end_pos = str_buff.find_first_of('\n', start_pos);
if (end_pos != -1)
{
std::string tmp = str_buff.substr(start_pos, end_pos - start_pos);
start_pos = end_pos + 1;
PathData data;
float tmp00 = 0;
int tmp01 = 0;
sscanf_s(tmp.c_str(), "(%d,%d,%f,%d)", &data.x, &data.y, &tmp00, &tmp01);/*这里是格式化读入 要注意自己的文本格式要互相匹配*/
data.x *= 1280 / 1600.0;
data.y *= 720 / 900.0;
data.angle = tmp00 * 100;
datalist.push_back(data);
}
}
int count = datalist.size();
fwrite(&count, sizeof(int), 1, fpDest);
for (int i = 0; i < datalist.size(); i++)
{
fwrite(&datalist[i], sizeof(PathData), 1, fpDest);
}
fclose(fpDest);
return 0;
}