ZBLOG

vector_sprintf(lineArr, "//===================================\n"); vector_sprintf(lineArr, "//===================================\n"); vector_sprintf(lineArr, "//===================================\n\n"); vector_sprintf(lineArr, "speed=%f,\n"...

根据你提供的代码,可以看出 vector_sprintf 函数被多次调用,并将格式化后的字符串依次存储在 lineArr 向量中。接下来,代码打开一个以二进制写入模式打开的文件指针 fp,并通过 fwritelineArr 中的数据写入到文件中。最后,关闭文件指针,并释放动态分配的内存。

需要注意的是,这段代码使用了 _tfopen 和宽字符路径 (L"wb") 来打开文件。如果你使用的是非 Windows 平台或者不需要支持宽字符路径,请使用适当的函数进行文件操作。

另外,在释放动态分配内存时,应该使用 delete[] 而不是 free() 函数,因为之前使用了 strdup() 进行了字符串复制。

修正后的代码如下:

vector_sprintf(lineArr, "//===================================\n");
vector_sprintf(lineArr, "//===================================\n");
vector_sprintf(lineArr, "//===================================\n\n");
vector_sprintf(lineArr, "speed=%f,\n", m_note_script_info.info.m_speed);
vector_sprintf(lineArr, "beat=%f,\n", m_note_script_info.info.m_speed);
vector_sprintf(lineArr, "1=%s,\n", get_music_tune_name(m_note_script_info.info.m_area_number, m_note_script_info.info.m_music_scale).c_str());
vector_sprintf(lineArr, "\n\n");
vector_sprintf(lineArr, "Singer=%s\n", m_note_script_info.info.GetSinger());
vector_sprintf(lineArr, "\n\n");

FILE* fp = fopen(filePath, "wb");
if (fp)
{
    fwrite(lineArr.data(), sizeof(char), lineArr.size(), fp);
    fclose(fp);
}

for (int i = 0; i < lineArr.size(); i++)
{
    if (lineArr[i]) delete[] lineArr[i];
}

请注意,在使用新的代码之前,请确保你已经包含了 <stdio.h><cstdio> 头文件。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://sdn.0voice.com/?id=3617

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?