So che l'hai chiesto in C++
ma questo codice funziona lo stesso :P
codice:
#include <stdio.h>
#include <iostream>
#include <string.h>
using namespace std;
void save();
void load();
struct casa{
int num;
char indirizzo[40];
};
int main(){
save();
load();
system("PAUSE");
}
void save(){
struct casa c;
c.num = 23;
strcpy(c.indirizzo,"Via Trionfale");
FILE *f;
f = fopen("indirizzo.txt","w"); //"w" specifica che il file è aperto in scittura
fwrite(&c, sizeof(c),1, f);
fclose(f);
}
void load(){
struct casa c;
FILE *f;
f = fopen("indirizzo.txt","r"); //"r" == file apperto in lettura
fread(&c, sizeof(c),1, f);
fclose(f);
cout << "Abiti in: " << c.indirizzo << " n." << c.num << "\n\n";
}
Se qualcosa non ti è chiaro posta pure 
[edit]
Molti programmatori ritengono che non sia una buona cosa fare "fwrite" e "fread" di un intero struct, così perdi la portabilità ad altri OS del file creato.
Essendo questo codice a scopo educativo non mi sono fatto problemi