hola que tal, tengo un problema con mi programa bueno mas que problema es una duda sobre como hacer que al registrar un nuevo usuario y poner el nombre pueda poner un espacio y al momento de guardar el usuario en el archivo me guarde también el espacio por que lo que pasa es que al guardar un usuario con espacio me crea un nuevo usuario
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
struct contacto
{
char numero[10];
char nombre[30];
char correo[30];
}lista[100];
int opcion;
int opc, i, w = 0;
ifstream archivo;
void capturar();
void mostrar();
void guardar();
void lectura();
void borrar();
void editar();
void email();
void manual();
void main()
{
lectura();
do
{
system("cls");
cout << "Menu de opciones \n";
cout << "1-Agregar contacto \n";
cout << "2-Mostrar contactos \n";
cout << "3-Guardar \n";
cout << "4-Manual de usuario \n";
cout << "5-Salir \n";
cout << "Opcion: ";
cin >> opc;
switch (opc)
{
case 1:
{
capturar();
i++;
break;
}
case 2:
{
mostrar();
break;
}
case 3:
{
guardar();
break;
}
case 4:
{
manual();
break;
}
}
}
while (opc != 5);
system("pause");
}
void capturar()
{
int lon_tel = 0;
system("cls");
do
{
cout << "Ingresa numero telefonico: ";
cin.getline(lista->numero, 20, '\n');
lon_tel = strlen(lista->numero);
if (lon_tel < 8 || lon_tel > 11)
cout << "El telefono debe tener 8 numeros como minimo." << endl;
} while (lon_tel < 8 || lon_tel > 11);
cout << "Escribe tu nombre: "; cin.ignore();
cin.getline(lista.nombre, 30);
cout << "Escribe tu correo electronico: ";
cin >> lista.correo;
email();
}
void mostrar()
{
int p;
system("cls");
for (w = 0; w < i; w++)
{
cout << "Contacto numero: " << w + 1 << endl;
cout << "Telefono: " << lista[w].numero << endl;
cout << "Nombre: " << lista[w].nombre << endl;
cout << "Correo electronico:" << lista[w].correo << endl << endl;
}
cout << "1-Borrar contacto \n2-Editar contacto \nPara salir presiona cualquier otro numero \n";
cin >> p;
if (p == 1)
borrar();
if (p == 2)
editar();
system("pause");
}
void guardar()
{
ofstream archivo;
archivo.open("Archivo.txt", ios::out);
for (w = 0; w < i; w++)
{
archivo << lista[w].numero << endl;
archivo << lista[w].nombre << endl;
archivo << lista[w].correo << endl;
}
if (archivo.fail())
{
cout << "No se pudo abrir el archivo";
system("pause");
exit(1);
}
else
{
system("cls");
cout << "El archivo se ha guardado correctamente \n";
system("pause");
}
archivo.close();
}
void lectura()
{
ifstream archivo;
string texto;
archivo.open("Archivo.txt", ios::in);
if (archivo.fail())
{
cout << "No se pudo abrir el archivo" << endl;
system("pause");
}
else
{
archivo >> lista[w].numero;
while (!archivo.eof())
{
archivo >> lista[w].nombre;
archivo >> lista[w].correo;
w++;
i++;
archivo >> lista[w].numero;
}
archivo.close();
}
}
void borrar()
{
int b;
cout << "Contacto a borrar: ";
cin >> b;
for (w = 0; w < b; w++)
{
if (w + 1 == b)
{
archivo >> lista[w].numero;
archivo >> lista[w].nombre;
archivo >> lista[w].correo;
}
}
}
void editar()
{
int c;
cout << "Contacto a editar (numero): ";
cin >> c;
for (w = 0; w < c; w++)
{
if (w + 1 == c)
{
system("cls");
cout << "Escribe tu numero telefonico: ";
cin >> lista[w].numero;
cout << "Escribe tu nombre: ";
cin >> lista[w].nombre;
cout << "Escribe tu correo electronico: ";
cin >> lista[w].correo;
}
}
}
void email()
{
int contadora = 0;
for (int k = 0; k < 30; k++)
if (lista.correo[k] == '@')
{
contadora++;
break;
}
if (contadora > 0)
cout << "Tiene @\n";
if (!contadora > 0)
{
cout << "Tu correo no tiene @, intenta de nuevo\n";
system("pause");
capturar();
}
system("pause");
}
void manual()
{
system("cls");
cout << "Bienvenido al manual de usuario, a continuacion te mostraremos \ncomo usar esta agenda. \n \n";
cout << "Inicialmente tenemos un menu en donde puedes elegir una opcion. \n";
cout << "Para seleccionar alguna opcion solo hay que escribir el numero\ndel lado izquierdo. \n";
cout << "En la opcion 'Agregar contacto' podras intrucir datos como por\nejemplo, el numero telefonico, nombre y correo. \n";
cout << "En la opcion 'Mostrar contactos' podras visualizar todos los\ncontactos que has guardado. \n";
cout << "Dentro de esta opcion, podras borrar o editar algun contacto. \n";
cout << "En la opcion 'Guardar' podras asegurarte de guardar todos los\ncontactos que hayas introducido. \n";
cout << "Y por ultimo, la opcion 'Salir' te permitira cerrar la agenda. \n";
cout << "Estas son todas las funcionalidades que tiene este programa. \n";
system("pause");
}