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