Salve ho un problema con la scrittura su file binari.In particolare quando inserisco numeri, su file vengono salvati caratteri speciali mentre per le stringhe è tutto ok.Vi posto il codice della classe "paccopostale" e la funzione membro scrivi che intende scrivere i dati di tale pacco su file binario. Grazie mille in anticipo a tutti per l'aiuto
codice:
#ifndef PACCOP_H_
#define PACCOP_H_
#include <iostream>
#include <fstream>

using namespace std;

class paccop{
      
      
      private:
              char *indirizzo;
              int codice;
              float peso;
              
      public:
             paccop(const char* i="",const int c=0,const float p=0.0)
             {indirizzo=new char[strlen(i)+1];strcpy(indirizzo,i);codice=c;peso=p;}
             paccop(const paccop &);
             const paccop & operator=(const paccop &);
             const char* get_indirizzo()const {return indirizzo;}
             int get_codice()const {return codice;}
             float get_peso()const {return peso;}
             void set_indirizzo(const char* I) {delete[] indirizzo;indirizzo=new char[strlen(I)+1];strcpy(indirizzo,I);}
             void set_codice(const int C) {codice=C;}
             void set_peso(const float P) {peso=P;}
             void scrivi();
             friend istream& operator>>(istream&,paccop &);
             friend ostream& operator<<(ostream&,const paccop &);
      
      };

#endif

void paccop::scrivi()
{
 char namefile[30];
 ofstream file;
 cout<<"Inserisci il nome del file binario su cui vuoi scrivere: ";
 cin.getline(namefile,29);
 file.open(namefile,ios::binary|ios::out);
 char ind[30];
 int c,n;
 float p;
 cout<<"Inserisci indirizzo,codice e peso del pacco\n";
 while(cin>>ind>>c>>p)
 {
  n=strlen(ind);
  file.write((const char*)(&n),sizeof(n));//voglio salvare su file anche la lunghezza della stringa indirizzo
  file.write((const char*)(&ind),n);
  file.write((const char*)(&c),sizeof(int));
  file.write((const char*)(&p),sizeof(float));
 }
 file.close();
}