0

I have information in a binary file, which goes in such a format(1 int, 10char)like this: "21fghjklbnv2qwertyuiop" and so on. Why cannot I write the info correctly in a text file (Name: 10char Age: int)? It writes only an integer, and it's a wrong one. I tried changing the way memory is allocated, but it made it worse

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);

}

0 Answers0