1

我正在使用 MPIR/Ubuntu 14.04。

我有很多数字的大整数,比如 2^1920,但不知道如何将它写入文件 *.txt

FILE *result; 

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

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

fclose(result);

没用。

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

4

1 回答 1

2

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 个字节的大小信息和那么多字节的肢体。大小和四肢都按重要性递减顺序(即大端)写入。

于 2014-12-11T22:25:28.343 回答