在文件中存储GMP mpf_t和mpz_t类型

时间:2013-08-05 22:48:41

标签: c file gmp storing-data

如何在C中的文件中保存mpf_t或mpz_t类型的GMP对象? 或者我如何访问这些类型的已分配内存块,以便我可以将它们直接写入文件?

修改

fwrite(&gmp_obj->_mp_size, sizeof(long), 1, fout);
fwrite(&gmp_obj->_mp_prec, sizeof(long), 1, fout);
fwrite(&gmp_obj->_mp_exp, sizeof(long), 1, fout);
fwrite(gmp_obj->_mp_d, sizeof(long), gmp_obj->_mp_size, fout);

1 个答案:

答案 0 :(得分:6)

您可以使用GMP的I / O功能。对于mpf_t

  

- 功能:size_t mpf_out_str (FILE *stream, int base, size_t n_digits, mpf_t op)
   - 功能:size_t mpf_inp_str (mpf_t rop, FILE *stream, int base)

mpz_t

  

- 功能:size_t mpz_out_str (FILE *stream, int base, mpz_t op)
   - 功能:size_t mpz_inp_str (mpz_t rop, FILE *stream, int base)
   - 功能:size_t mpz_out_raw (FILE *stream, mpz_t op)
   - 功能:size_t mpz_inp_raw (mpz_t rop, FILE *stream)

除了*_raw之外,还有separate section中描述的mpz_t二进制导入/导出功能

  

- 功能:void mpz_import (mpz_t rop, size_t count, int order, size_t size, int endian, size_t nails, const void *op)
   - 功能:void * mpz_export (void *rop, size_t *countp, int order, size_t size, int endian, size_t nails, mpz_t op)