2014-12-10 21 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字節的大小信息,而 表示許多字節的四肢。大小和四肢均以 降低顯着性順序(即,以大寫字母)寫入。