Erro de buffer (provavelmente) c++

fala galera. Entao, está dando um erro:
o programa só salva a primeira entrada. O resto ele anula.
Aqui está o codigo, alguem me da um help?? vlw

[code]#include
#include
#include <fstream.h>
#include
#include
using namespace std;

char nome[80], endereco[150], email[150], complemento[70], resposta;
int tel, numero, predio;

int main()
{
do{
cout<<“Adicionar contato”<<endl;
cout<<"Nome: ";
cin.getline(nome, 80);
cout<<"Telefone: ";
cin>>tel;
cout<<"Endereco: ";
cin.getline(endereco, 150);
cout<<"Numero: ";
cin>>numero;
cout<<"Complemento: ";
cin.getline(complemento, 70);
cout<<"Apto: ";
cin>>predio;
cout<<"Email: ";
cin.getline(email, 150);

ofstream File;
File.open("c:\\Users\\Rafael\\Desktop\\teste2s.txt");
File<<nome<<"\n"<<tel<<"\n"<<endereco<<" "<<numero<<" "<<complemento<<" "<<predio<<"\n"<<email<<"\n\n\n\n----------------------------\n\n";
File.close();
cout<<"Quer ler os dados gravados? (S) ou (N)"<<endl;
cin>>resposta;

}while(toupper(resposta)==‘S’); [/code]

Em particular, não gosto nem um pouco de usar “>>”. É que você precisa às vezes usar “ignore” para que as coisas funcionarem :slight_smile:

#include <cstdlib>  
#include <iostream>  
#include <fstream>  // use fstream, não fstream.h
#include <cstring>  
#include <string>  
using namespace std;  
  
char nome[80], endereco[150], email[150], complemento[70], resposta;  
char tel[20];
int numero, predio;  
  
int main()  
{  
do{  
    cout<<"Adicionar contato"<<endl;  
    cout<<"Nome: ";  
    cin.getline(nome, 80);  
    cout<<"Telefone: ";  
    cin.getline(tel, sizeof(tel));
    cout<<"Endereco: ";  
    cin.getline(endereco, 150);  
    cout<<"Numero: ";  
    cin>>numero;  cin.ignore (100, '\n');
    cout<<"Complemento: ";  
    cin.getline(complemento, 70);  
    cout<<"Apto: ";  
    cin>>predio;  cin.ignore (100, '\n');
    cout<<"Email: ";  
    cin.getline(email, 150);  
      
    ofstream File;  
    File.open("teste2s.txt");  
    File<<nome<<"\n"<<tel<<"\n"<<endereco<<" "<<numero<<" "<<complemento<<" "<<predio<<"\n"<<email<<"\n\n\n\n----------------------------\n\n";  
    File.close();  
    cout<<"Quer ler os dados gravados? (S) ou (N)"<<endl;  
    cin>>resposta;  
    cout << "Resposta foi " << resposta << endl;
}while(toupper(resposta)=='S'); 
}

Obrigado pela dica.
Mas só mais uma coisa:
os dados não foram gravados no arquivo .txt, por que?
[]'s

esquece, falei bobagem.
ahahhaha
Agradeço a sua ajuda!! []'s

Melhor ainda seria usar a classe std::string ao invés de arrays de char.