我需要以下代码/议程的帮助,每次您编辑/删除议程和索引时,它都会添加一个额外的“endl;” 到“Agenda.txt”,并且由于有一个没有索引引用的新行,“Index.txt”保存一个“-858993460”作为记录数,这是由编辑文件引起的议程中的新空行引起的,如果你添加联系人工作正常。
代码基本上是西班牙语,但我评论了主要说明。请帮忙!
#include <conio.h>
#include <fstream>
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <windows.h>
#include <math.h>
using namespace std;
struct estudiantes
{
int telefono;
char nombre[50];
};
estudiantes contacto[100];
int main()
{
int opciones, i;
ifstream readagenda, readindex;
do
{
system("cls");
cout << "Elige opcion a ejecutar" << endl;
cout << "1. Verificar agenda de contactos actual" << endl; //view current agenda
cout << "2. Agregar contactos" << endl; //Add contact numbers
cout << "3. Editar contactos" << endl; //Edit contacts
cout << "4. Eliminar contactos" << endl; //Erase contacts
cout << "5. Terminar Programa" << endl; //End program
cout << "Ingrese # opcion a elegir: ";
cin >> opciones;
switch (opciones)
{
case 1:
{
char linea[100];
cout << endl;
readagenda.open("Agenda.txt", ios::in);
if (readagenda.fail())
{
cout << "No se puede abrir el archivo, ingresa contactos para crear una agenda" << endl;
}
else
{
do
{
readagenda.getline(linea, sizeof(linea));
cout << linea << endl;
} while (!readagenda.eof());
}
readagenda.close();
system("Pause");
break;
}
case 2:
{
ofstream add, index;
int contactos;
cout << "\nIngrese Cantidad de contactos a guardar : ";//how many contacts are you going to save?
cin >> contactos;
for (int i = 1; i <= contactos; i++)
{
cout << "Ingrese Telefono No. " << i << " : ";//phone number
cin >> contacto[i].telefono;
cin.ignore(256, '\n');
cout << "Ingrese Nombre " << i << " : ";//full name
cin.getline(contacto[i].nombre, sizeof(contacto[i].nombre), '\n');
}
add.open("Agenda.txt", ios::app);
if (add.fail())
{
cout << "\nNo se puede crear el archivo" << endl;
exit(1);
}
for (int i = 1; i <= contactos; i++)
{
add << contacto[i].telefono << " - " << contacto[i].nombre << endl;
}
add.close();
index.open("Index.txt", ios::app);
if (index.fail())
{
cout << "\nNo se puede crear el archivo" << endl;
exit(1);
}
for (int i = 1; i <= contactos; i++)
{
index << contacto[i].telefono << endl;
}
index.close();
cout << "\nContacto agregado exitosamente...";//contact added
system("pause");
break;
}
case 3:
{
int modificar, readnum[100];
char newname[100], readcon[100];
i = 0;
bool encontrado = false;
cout << "\nIngrese No. telefono de contacto a modificar: ";//contact to modify
cin >> modificar;
cin.ignore(256, '\n');
cout << "Ingrese nuevo nombre de contacto: "; //new contact name
cin.getline(newname, sizeof(newname), '\n');
ofstream numerosmodtemp;
readindex.open("Index.txt", ios::in); // opens index
readagenda.open("Agenda.txt", ios::in); // opens agenda
numerosmodtemp.open("numerosmodtemp.txt", ios::app); //creates temp file
if (readagenda.fail() || readindex.fail())
{
cout << "\nNo se puede abrir el archivo, ingresa contactos para crear una agenda" << endl;
}
else
{
do
{
readagenda.getline(readcon, sizeof(readcon)); // reads agenda
readindex >> readnum[i]; // reads index
if (readnum[i] == modificar)
{
encontrado = true;
numerosmodtemp << modificar << " - " << newname << endl;//adds new contact info
}
else
{
numerosmodtemp << readcon << endl; // uses regular agenda
}
i++;
} while (!readindex.eof());
numerosmodtemp.close();
readindex.close();
readagenda.close();
if (encontrado == true)
{
cout << "\nContacto modificado exitosamente..."; // contact edited
system("pause");
}
else
{
cout << "\nContacto no ha sido encontrado..."; //contact not found
system("pause");
}
remove("Agenda.txt");
rename("numerosmodtemp.txt", "Agenda.txt");
break;
}
break;
}
case 4:
{
int borrar, readn[100];
char readc[100];
i = 0;
bool encontrado = false;
cout << "\nIngrese No. telefono de contacto a eliminar: ";//number of contact to erase
cin >> borrar;
ofstream numerosborrados, numerosdeltemp, numerostemp;
readindex.open("Index.txt", ios::in); // opens index
readagenda.open("Agenda.txt", ios::in); // opens agenda
numerosborrados.open("Contactos Borrados.txt", ios::app); // opens erased contacts
numerosdeltemp.open("numerosdeltemp.txt", ios::app); // opens temp index
numerostemp.open("numerostemp.txt", ios::app); // opens temp agenda
if (readagenda.fail() || readindex.fail())
{
cout << "\nNo se puede abrir el archivo, ingresa contactos para crear una agenda" << endl;
}
else
{
do
{
readagenda.getline(readc, sizeof(readc)); // reads contacts
readindex >> readn[i]; // reads index
if (readn[i] == borrar)
{
encontrado = true;
numerosborrados << readc << endl; // adds to erased contacts file
}
else
{
numerostemp << readc << endl; // adds to temp agenda
numerosdeltemp << readn[i] << endl; // adds to temp index
}
i++;
}while (!readindex.eof());
}
numerosborrados.close();
numerostemp.close();
numerosdeltemp.close();
readindex.close();
readagenda.close();
if (encontrado == true)
{
cout << "\nContacto eliminado exitosamente...";// contact erased
system("pause");
}
else
{
cout << "\nContacto no ha sido encontrado..."; //contact not found
system("pause");
}
remove("Agenda.txt");
remove("Index.txt");
rename("numerosdeltemp.txt", "Index.txt");
rename("numerostemp.txt", "Agenda.txt");
break;
}
case 5:
{
cout << "\nPrograma terminado, "; // End program
system("pause");
break;
}
default:
{
cout << "\nEsta opcion no esta disponible, "; // not available
system("pause");
break;
}
}
} while (opciones != 5);
}