从二进制文件读取 mpq_t
Read mpq_t from a binary file
我已经将 mpq_t 写入了一个名为 "data" 的二进制文件,现在我试图从文件中一个一个地读取 mpq_t,但我一直在行:gmp_printf("%Qd\n", buf)。我已经调试了一段时间,但无法弄清楚哪里出了问题。
int main(){
FILE *fp = fopen("data", "rb");
if (fp == NULL){
perror("FILE open failed");
exit(1);
}
mpq_t buf;
mpq_init(buf);
while (fread(&buf, sizeof(mpq_t), 1, fp) == 1){
gmp_printf("%Qd\n", buf);
}
fclose(fp);
return 0;
}
从文件中读取后,我似乎遇到了 buf 的内存问题。我也尝试过 mallocing 而不是启动,但它也没有用。
mpq_t *buf = (mpq_t *)malloc(sizeof(mpq_t));
if (buf == NULL){
perror("malloc failed");
exit(1);
}
while (fread(buf, sizeof(mpq_t), 1, fp) == 1){
gmp_printf("%Qd\n", *buf);
}
使用gmp_fprintf和gmp_fscanf读写:
gmp_fprintf (FILE *fp, const char *fmt, ...)
gmp_fscanf (FILE *fp, const char *fmt, ...)
我已经将 mpq_t 写入了一个名为 "data" 的二进制文件,现在我试图从文件中一个一个地读取 mpq_t,但我一直在行:gmp_printf("%Qd\n", buf)。我已经调试了一段时间,但无法弄清楚哪里出了问题。
int main(){
FILE *fp = fopen("data", "rb");
if (fp == NULL){
perror("FILE open failed");
exit(1);
}
mpq_t buf;
mpq_init(buf);
while (fread(&buf, sizeof(mpq_t), 1, fp) == 1){
gmp_printf("%Qd\n", buf);
}
fclose(fp);
return 0;
}
从文件中读取后,我似乎遇到了 buf 的内存问题。我也尝试过 mallocing 而不是启动,但它也没有用。
mpq_t *buf = (mpq_t *)malloc(sizeof(mpq_t));
if (buf == NULL){
perror("malloc failed");
exit(1);
}
while (fread(buf, sizeof(mpq_t), 1, fp) == 1){
gmp_printf("%Qd\n", *buf);
}
使用gmp_fprintf和gmp_fscanf读写:
gmp_fprintf (FILE *fp, const char *fmt, ...)
gmp_fscanf (FILE *fp, const char *fmt, ...)