首页 > 解决方案 > 二进制文件中的信息无法正确显示

问题描述

我在一个二进制文件中有信息,它的格式如下(1 int,10char):“21fghjklbnv2qwertyuiop”等等。为什么我不能在文本文件中正确写入信息(名称:10char 年龄:int)?它只写一个整数,而且是错误的。我尝试改变分配内存的方式,但它使情况变得更糟

void Task2_and_3(int i, int n)
{
    int *Number_Filep = (int*)malloc(sizeof(int));
    char *Wordp = (char*)malloc(sizeof(char)*11);
    i = 0;
    FILE*f;
    if ((f = fopen("Test2.bin", "rb"))==NULL)
    {
        printf("File cannot be opened");
        exit(1);
    }
    if(Number_Filep == NULL)
    {
         free(Number_Filep);
         free(Wordp);
         exit(2);
    }
    else if(Wordp == NULL)
    {
        free(Number_Filep);
        free(Wordp);
        exit(5);
    }
    while(1)
    {
       if(feof(f))
       {
           break;
       }
       if(i>=1)
       {
           int* temp = Number_Filep;
           char* tempw = Wordp;
           Number_Filep = realloc(Number_Filep, sizeof(int));
           Wordp = realloc(Wordp, 11*sizeof(char));
           if(Number_Filep  == NULL)
           {
              free(temp);
              free(tempw);
              printf("Error");
              exit(3);
           }
           else if(Wordp == NULL)
           {
              free(temp);
              free(tempw);
              printf("Error");
              exit(3);
           }
       }
        fread(Number_Filep, sizeof(int), 1,f);
        fread(Wordp, sizeof(char), 11 ,f);
        i++;
    }
    fclose(f);
    FILE*fp;
    if ((fp = fopen("Data.txt", "w"))==NULL)
    {
        printf("File cannot be opened");
        exit(4);
    }
    n=0;
   /* for(n=0;n<i;n++)
    {*/
    fprintf(fp,"Name: %s", Wordp);
    fprintf(fp,"\n");
    fprintf(fp,"Age: %d", *Number_Filep);
    fprintf(fp,"\n");
    //}
    fclose(fp);
    free(Number_Filep);
    free(Wordp);

}

标签: cfile-ioeof

解决方案


推荐阅读