使用 MPIR (GMP) 库将 mpf_t 值保存到文件

Posted

技术标签:

【中文标题】使用 MPIR (GMP) 库将 mpf_t 值保存到文件【英文标题】:Saving mpf_t value to file using MPIR (GMP) library 【发布时间】:2016-05-06 12:03:29 【问题描述】:

我正在尝试将我的号码保存在文件中,但程序不断崩溃:

include stdio.h
include mpir.h

int main(void)

mpf_set_default_prec(32); //Default precision for floating points

mpf_t my_number;
mpf_init_set_str(my_number, "5.12345e0", 10); //Set my_number to 5.123 with decimal base (10)

FILE *f;
f = fopen("some.txt", "w");

gmp_printf("Printed number to screen: %.*Ff \n", 32, my_number);

//Everything works until I try to save it to file:

gmp_fprintf(f, "My saved number is:  %.*Ff \n", 32, my_number);

fclose(f);

return 0;

我试过用 fprintf 代替:

gmp_fscanf(f, "%F", &zbroj)

mpz_out_str(f, 10, zbroj)

sprintf(f, "%F", zbroj)

【问题讨论】:

请注意,您不调用mpf_clear(my_number)会导致内存泄漏。 【参考方案1】:

我的 x64 版本似乎有问题。 我再次编译了 MPIR(这次是 x32)并将文件放入 VS 目录,它就可以工作了。

我的猜测是我没有遵循构建 x64 的特殊说明:\

顺便说一句。我用了 mpf_out_str(f, 10, 0, var);

其中 f 是指向文件的指针,10 是基数,0 表示最大精度,var 是要保存的变量。

【讨论】:

以上是关于使用 MPIR (GMP) 库将 mpf_t 值保存到文件的主要内容,如果未能解决你的问题,请参考以下文章

gmpy安装使用方法

MPIR gcc 编译 - 找不到 -lmpir

移除对 Windows SDK 版本的依赖

在 Visual Studio 中的 Windows 上安装 MPIR 时遇到问题?

如何将基于mpir库的VC9.0代码转换为Matlab mex函数?

在独立程序中使用 GMP