使用MPIR将大量数字的数字写入文件

时间:2014-12-10 23:12:01

标签: ubuntu-14.04 gmp mpir

我正在使用MPIR / Ubuntu 14.04。

我有一个有大量数字的大整数,比如2 ^ 1920,并且不知道如何将其写入文件* .txt

FILE *result; 

result=fopen("Number.txt","a+");

gmp_fprintf(result,"%d",xyz);

fclose(result);

没有工作。

我还可以使用其他一些选项吗?

1 个答案:

答案 0 :(得分:2)

gmp_printf()函数(因此随后gmp_fprintf())需要mpz_t对象的特殊格式说明符(我猜xyz是)。您应该使用%Zd而不是普通%d,这不起作用。要迂腐,undefined behavior使用不合适的f。在C.

如果您不需要“全功能”格式化输出,那么您也可以查看mpz_out_str(),它允许指定基数(如2或10):

size_t mpz_out_str (FILE *stream, int base, const mpz_t op)

或者你可以使用mpz_out_raw()函数,只是“转储”整数,因为它以二进制格式存储:

size_t mpz_out_raw (FILE *stream, const mpz_t op)
  

以原始二进制格式在stdio流上输出op。整数是   用便携式格式写的,有4个字节的大小信息,和   四肢的那么多字节。大小和肢体都写在   降低显着性顺序(即在big-endian中)。