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

时间:2016-12-26 17:06:51

标签: c++ file fwrite

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

这是我的代码:

unsigend short* ptr = rawdata();    

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

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

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

1 个答案:

答案 0 :(得分:7)

由于您提到rawData是QVector,请替换:

sizeof(rawData)

rawData.size()

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

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