On Fri, 19 Jul 2019, Thomas Lowry wrote:

#include <gmp.h>
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
int main(int argc, char** argv) {
 mpz_t b;
 mpz_init(b);

 //not sure why but without doing something before
 //the file IO the file write will segfault
 int len = 5;
 mpz_t l[5];
 for(int i = 0; i < len; ++i) {
   mpz_init(l[i]);
 }
 for(int i = 0; i < len; ++i) {
   mpz_set_ui(l[i], 1);
 }
 for(int i = 0; i < len; ++i) {
   mpz_clear(l[i]);
 }

 FILE *file = fopen("numbers.dat", "wb");
 if(file == NULL) {
   perror("Could not open numbers.dat for writing");
   printf ("Error no is : %d\n", errno);
   exit(EXIT_FAILURE);
 }
 for(int i = 1; i < 4; ++i) {
   printf("writing ");
   mpz_set_ui(b, i);
   //mpz_pow_ui(b, b, 1<<5);
   mpz_out_str(stdout, 16, b);
   printf(" to file\n");
   mpz_out_raw(b, file);
 }
 fclose(file);
 printf("write finished\n");
 file = fopen("numbers.dat", "rb");
 for(int i = 1; i < 4; ++i) {
   printf("reading ");
   mpz_inp_raw(b, file);
   mpz_out_str(stdout, 16, b);
   printf(" from file\n");
 }
 fclose(file);
 mpz_clear(b);
 return 0;
}

I compile this with
gcc test.c -lgmp

Try adding -Wsystem-headers

(then swap the order of the includes, then look at the new warning)

--
Marc Glisse
_______________________________________________
gmp-bugs mailing list
[email protected]
https://gmplib.org/mailman/listinfo/gmp-bugs

Reply via email to