ecco tutto il codice completo. quando lo eseguo funziona, scrive sul file, e non lascia nessuna riga vuota
codice:
# include <iostream>
# include <windows.h> 
# include <string.h> 
# include <fstream>
using namespace std;

string nome, cogn, numero, mail;
string linea;
long pos;
int i;

void inizia();
void acquis_scritt(ofstream &write);
void scrittura();
void leggi_stampa();
int conta_righe();

int main()
{
  int scelta,rigaFile,colon,Nrighe;
  char ok;
  cout << "RUBRICA telefonica\n"<<endl;

  while (scelta!=5)
  {     
  cout << "1) Inizia Rubrica " << endl;
  cout << "2) Aggiungi Contatti " << endl;
  cout << "3) Visualizza contatti " << endl;
  cout << "4) Elimina Rubrica " << endl;
  cout << "5) Esci" << endl;
  cin >> scelta; 

  if (scelta==1)
                {
                 ofstream write("Rubrica.txt",ios::out);
                 write << "NOME";
                 write.seekp (20, ios_base::beg);
                 write <<"COGNOME";
                 write.seekp (40, ios_base::beg);
                 write <<"NUMERO";
                 write.seekp (52, ios_base::beg); 
                 write <<"E-MAIL"<<endl;
                 acquis_scritt(write);
                 write.close();                    
                }
  if (scelta==2)
                {
                 ofstream write("Rubrica.txt",ios::app);
                 acquis_scritt(write);
                 write.close(); 
                } 
  if (scelta==3)
                {
                 leggi_stampa();
                 }         
  if (scelta==4)
                {
                 cout << "Sei sicuro di voler eliminare la rubrica? (s/n)" << endl;
                 cin >> ok;
                 if (ok=='s' || ok=='S')
                                        {                    
                                        ofstream remove("Rubrica.txt");
                                        remove.close(); 
                                        cout << "Rubrica Eliminata!! "<<endl;  
                                        }                  
                }                                                     
  if (scelta!=3)
                system("CLS");                                                     
  } 
  cout << "Sei uscito dal programma." <<endl;                                     
  system("PAUSE");  
}
//------------------------------------------------------------------------------
void acquis_scritt(ofstream &write)
{
 cout << "Inserisci  nome:"<<endl;
 cin >> nome;
 nome.resize(20);
 write << nome; 

 cout << "Inserisci  cognome:"<<endl; 
 cin >> cogn;
 cogn.resize(20);
 write << cogn; 

 cout << "Inserisci  numero:"<<endl; 
 cin >> numero;
 numero.resize(12);
 write << numero; 

 cout << "Inserisci  e-mail:"<<endl; 
 cin >> mail; 
 mail.resize(35);
 write << mail << endl;
}
//------------------------------------------------------------------------------
void leggi_stampa()
{
  system("CLS"); 
  int rig = conta_righe();
  ifstream read("Rubrica.txt");
  if(read)
          {
           for(i=1;i<=rig;i++)
                              {                                                 
                              read >> linea;
                              cout << linea <<endl;     
                              } 
          }  
  read.close();          
}
//------------------------------------------------------------------------------
// CONTA RIGHE
int conta_righe()
    {
    fstream file;
    string s;
    int contarighe=0;
    file.open("Rubrica.txt",ios::in);
    if(file)
            {
             while(!file.eof())
                               {
                               getline(file,s,'\n');
                               contarighe++;
                               }
            }
    return contarighe-1;
    }
invece quando inserisco '3' visualizza contatti, mi stampa a monitor una riga vuota