为什么我的 fwrite 命令只 运行 一次?

Why does my fwrite command only run once?

我正在使用 fwrite 来存储名为 rawData 的 QVector 的值。

这是我的代码:

unsigend short* ptr = rawdata();    

FILE * pFile;
pFile = fopen("arrayValues.txt", "a");
fwrite(ptr, sizeof(unsigned short), sizeof(rawData), pFile);
fclose(pFile);

上面的程序 "works" 意味着我能够写入一个文件,当我用十六进制编辑器打开文件时,我可以看到里面的东西。但是,即使程序一遍又一遍地调用该方法,它也只会写入一帧的值然后停止。

更奇怪的是,如果我关闭程序并再次 运行 它,它将打开文件(其中已经包含最后一个 运行 的值)并附加一组新值到最后。所以我知道我正在以追加模式打开文件。

因为你提到 rawData 是一个 QVector,替换为:

sizeof(rawData)

rawData.size()

如果这不起作用,我认为问题不在于您向我们展示的代码。请提供更多 information/code.

说明:sizeof 运算符 returns 您为其参数提供的类型的大小(以字节为单位)。在你的例子中,它返回类型 QVector 使用的字节数,因为你没有给它任何指针作为参数,而是类型 QVector 的对象。成员函数 size() 是获取 class QVector 的元素数量的好方法。