【发布时间】:2016-07-15 14:08:25
【问题描述】:
我有这个代码:
printf("GPU: %ic SYSTEM: %ic CPU: %ic HDD: %ic ",temp[0],temp[1],temp[2],temp[7]);
ofstream temp_file;
temp_file.open("D:\\localhost\\xampp\\htdocs\\monitor\\temps.json");
temp_file << fprintf("\"{\"GPU\": [%ic], \"System\": [%ic], \"CPU\": [%ic], \"HDD\": [%ic]}\"", temp[0],temp[1],temp[2],temp[7]);
temp_file.flush();
temp_file.close();
我收到错误“无法将 'const char*' 转换为 'FILE* {aka _iobuf*}' for argument '1' to 'int fprintf(FILE*, const char*, ...)'
temp 变量是一个 int,并且代码的第一行确实成功地打印出格式化的文本。如何将该文本推送到文件中?
【问题讨论】:
-
如果
FILE*和fopen()易于使用,为什么不使用它们? -
你想用的可能是
snprintf()。 -
检查 fprintf 采用的参数。与您的代码进行比较。再次阅读错误信息。此外,请避免使用像 printf 这样的遗留 C 函数,因为它们不是类型安全的,而且很容易创建未定义的行为错误。只需使用 C++ 流。
-
重新分级错误很明显-您确实调用
fprintf(),第一个参数是const char*,而不是代码第四行中的FILE*-fprintf("\"{\"GPU...。关于您的第二个问题“我如何将该文本推送到文件” - 使用您的ofstream temp_file,但阅读文档和示例如何使用 stl 流。是我否决了这个问题