【发布时间】:2013-08-30 06:46:45
【问题描述】:
我有一个 C/C++ 库,它的函数在 Fortran 程序中被调用。 我想将我的库中生成的一些输出写入 Fortran 程序输出到的同一个文件中。 我尝试传递文件名,用 C++ 打开它,写入它,最后用这个示例代码关闭它:
std::ofstream output;
output.open(name, ofstream::out | ofstream::app);
/*
Some calculations...
*/
output << "Result is " << result << std::endl;
output.close();
没有任何东西被写入文件,除非我删除 ofstream::app 但是大部分由 Fortran 代码写入的内容都被破坏了...... 我还尝试使用 fprintf 和类似的示例代码:
FILE * pFile = fopen(name, "a");
/*
Some calculations...
*/
fprintf(pFile, "Result is = %.10E", result);
fclose(pFile);
结果相同。关于如何做到这一点的任何线索?
【问题讨论】:
-
你检查文件是否正确打开了吗?
-
正如弗拉基米尔所说,这很危险。但是,如果您在打开(附加)另一种“语言”之前以一种“语言”关闭,则可以(相对)安全地执行此操作。在 Fortran 90 中追加的标准方法是使用 position="append" 打开。在这里,在调用 C++ 函数之前关闭 Fortran 中的文件,返回后,如果需要再次写入,请重新打开以追加。