我正在使用 MPIR/Ubuntu 14.04。
我有很多数字的大整数,比如 2^1920,但不知道如何将它写入文件 *.txt
FILE *result;
result=fopen("Number.txt","a+");
gmp_fprintf(result,"%d",xyz);
fclose(result);
没用。
我可以使用其他一些选项吗?
我正在使用 MPIR/Ubuntu 14.04。
我有很多数字的大整数,比如 2^1920,但不知道如何将它写入文件 *.txt
FILE *result;
result=fopen("Number.txt","a+");
gmp_fprintf(result,"%d",xyz);
fclose(result);
没用。
我可以使用其他一些选项吗?
该gmp_printf()
函数(因此随后gmp_fprintf()
也是如此)需要mpz_t
对象的特殊格式说明符(我猜xyz
是)。您应该使用%Zd
而不是 plain %d
,那是行不通的。为了迂腐,在 C 中使用不适当的 fs是未定义的行为。
如果您不需要“全功能”格式的输出,那么您也可以看看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 流流上的操作。整数以可移植格式写入,具有 4 个字节的大小信息和那么多字节的肢体。大小和四肢都按重要性递减顺序(即大端)写入。