我正在使用MPIR / Ubuntu 14.04。
我有一个有大量数字的大整数,比如2 ^ 1920,并且不知道如何将其写入文件* .txt
FILE *result;
result=fopen("Number.txt","a+");
gmp_fprintf(result,"%d",xyz);
fclose(result);
没有工作。
我还可以使用其他一些选项吗?
答案 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中)。