fprintf stdout 没有 100% 准确转储数据
fprintf stdout isn't dumping data 100% accurate
>我一直在使用IAudioCaptureClient从我的音频输出设备收集数据,并使用mmioWrite将其记录到一个文件中,但我也想将这些数据转储到stdout,以便我能够流式传输它。我正在使用 fprintf,但输出数据与写入的文件并不完全相同,即使它来自同一个缓冲区,两个文件似乎 98% 相同。
以下是相关代码:
BYTE *pData;
...
// Here pData is bufferized with data from my output device
pAudioCaptureClient->GetBuffer(&pData, &nNumFramesToRead, &dwFlags, NULL, NULL);
...
LONG lBytesWritten = mmioWrite(hFile, reinterpret_cast<PCHAR>(pData), lBytesToWrite);
fprintf(stdout, "%.*s", lBytesWritten, pData);
...
// I've also tried
// HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
// WriteConsole(hStdOut, reinterpret_cast<PCHAR>(pData), lBytesWritten, NULL, NULL);
你应该使用fwrite
来写入二进制数据,你可以这样控制字节数:fwrite(pData, 1, lBytesWritten, stdout);
在您的示例中,fprintf
在第一个零终止符字符处停止打印数据(lBytesWritten
宽度在这里没有帮助,它只是控制填充(。如果没有零终止符,它将打印更多,可能会引发崩溃。
相关文章:
- 分段故障(堆芯转储)矢量
- Cppcheck生成xml转储文件
- 如何找出GDB的SIGTRAP核心转储的根本原因
- C++映射分割错误(核心转储)
- 在c++中初始化矩阵时出现分段错误(核心转储)
- 在c++中键入向量中的所有值后,得到分段错误(核心转储)
- 浮点异常(核心转储)#694457
- 分段错误(核心转储)但无法弄清楚
- 链接到libkcapi时没有核心转储
- 从文件中读取的数据,但发生核心转储错误
- fprintf stdout 没有 100% 准确转储数据
- 将 CPP 数据转储到文件中,以便以后重复使用
- 如何在关闭C++窗口之前转储游戏数据
- 如何在C++中分析来自流量转储文件的数据包信息
- C++ WSAsend 数据包的奇怪十六进制转储
- 将树数据结构转储到文件/从文件还原树数据结构
- C++数据结构(标准库)转储(如 Python 打印函数)
- 无法使用sqlite3数据库表的所有行中的数据填充列表,错误:跟踪/断点陷阱(核心转储)
- C++代码转储"random"数据
- 转储原始图像数据