2014-12-10 35 views
1

我正在使用MPIR/Ubuntu 14.04。使用MPIR将大量数字写入文件

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

FILE *result; 

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

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

fclose(result); 

没有工作。

我还有其他的选择吗?

回答

2

gmp_printf()函数(因此随后gmp_fprintf()以及)需要mpz_t对象特殊格式说明(我想xyz是)。你应该使用%Zd而不是简单的%d,这是行不通的。要迂腐,它是undefined behavior使用不足的f.s.在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) 

输出运算,在原始的二进制格式。该整数是用便携式格式写成的,其中有4字节的大小信息,而 表示许多字节的四肢。大小和四肢均以 降低显着性顺序(即,以大写字母)写入。