为什么我的 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
的元素数量的好方法。
我正在使用 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
的元素数量的好方法。