UTNianos

Versión completa: Consulta c++ ARCHIVOS
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
Buenas noches una consulta estoy con un problema en un codigo de archivos que necesito ver lo que esta en el archivo y se me cuelga completamente y no me tira un error alguien sabe por que? envio el codigo y muchas gracias por sus aportes
#include <iostream>
#include <fstream>
using namespace std;
int opcion, opcion2, e, opcion3, d, opcion4, E, D;
int main()
{
ofstream Archivo;
Archivo.open("Archivo.txt", ios::app);
cout << "Bienvenido al Archivo On-Line" << endl;
cout << "Ingrese el numero de opción a realizar (1-5)" << endl;
cout << "1. Cantidad 1" << endl;
cout << "2. Cantidad 2" << endl;
cout << "4. Ver Cantidad 1" << endl;
cout << "5. Salir" << endl;
cin >> opcion;
if (opcion == 1)
{
cout << "Ingrese la cantidad a ingresar" << endl;
cin >> e;
int num[e];

cout << "Ingrese los numeros" << endl;

for (int i=0; i<= e-1; i++)
{

cin >> num[i];
}


cout << "¿Desea guardar los numeros Archivo.txt" << endl;
cout << "1. Si" << endl;
cout << "2. No" << endl;
cin >> opcion2;
if (opcion2==1)
{
for (int i=0; i<= e-1; i++)
{
Archivo << "Numero: " << num[i] << endl;
}
cout << "Los numeros han sido guardados" << endl;
}
else
{
cout << "Los expedientes no han sido guardados" << endl;
}
}
ifstream Salida;
Salida.open("Archivo.txt");
int num[e];
if (opcion==4)
{
while (! Salida.eof())
{
for (int i=0; i<= e-1; i++)
{

Salida >> num[i];
}

for (int i=0; i<= e-1; i++)
{

cout << num[i] << endl;
}

}
}




Archivo.close();
Salida.close();
return 0;
}

Por favor que alguien responda me estoy volviendo loco pensando porque se cuelga jajaj
Hola como estas? En tu lugar primero haría el menú principal en un Switch. También verifica que archivo.txt este abierto. Trata de subir el código indentado para ver si hay algún problema con las llaves, porque asi es un toque paja. También podes ver si los archivos se crearon y si tienen la información que les pasaste. Saludos
Muchas gracias por tu rsta los archivos pasan pruebo con el switch pero si lo pongo y por ejemplo marca la opcion 1 dps va a srguir con la 2 y asi con las otras opciones sin que yo haya seleccionado las otras opciones. esta bien lo que digo?
Adhiero a gerarLA, si subís el código indentado mucho mejor.

Para probar donde es que se te cuelga, podes mandar varios cout para imprimir algo en pantalla y así ir viendo si el programa se esta comportando como vos querés.

Estoy desde el cel, en casa lo veo mejor
Lo voy a probar cualquier cosa vuelvo a publicar. Muchisimas gracias por su tiempo
Me sigue pasando lo mismo con el switch que puedo hacer?
Para encontrar qué es, compartimentá todo lo que puedas. Separar el menú en una función va a clarificar muchísimo el código, lo mismo si tabulas correctamente cuando entrás o salís de bloques de código.

Y cuando sea legible, si todavía no tenés idea, repasá lo obvio...

Cita:ios::in Modo de operaciones de entrada.
ios::out Modo de operaciones de salida.
ios::binary Opera en modo binario.
ios::ate Ubica la posición inicial al final del archivo, sí este parámetro se omite, la posición inicial queda al principio del archivo.
ios::app Todas las operaciones de salida son realizadas al final del archivo, haciendo append (agregar al final). Sólo puede usarse en flujos abiertos sólo de salida.
ios::trunc Si el archivo abierto para operaciones de salida ya existe físicamente, el contenido se borra y será reemplazado por el nuevo que se introduzca
No estoy familiarizado con esa forma de manejar los archivos, en algoritmos use fopen fread fwrite de C...lo que sí te diría es que uses el debugger de eclipse, o algun otro, pero el de eclipse me parece muy copado y personalmente me sirvió banda.
No se por que se cuelga todavia jaja
Vos sólo queres ver lo que hay en el archivo que creaste? probá colocando esto en la opcion 4 (Hacelo con switch como dijeron mas arriba)

if (opcion==4)
{
ifstream Salida;
Salida.open("Archivo.txt");
if(Salida.is_open())
{
while(!Archivo.eof())
{

Salida.getline(get,30,',');
cout << get << endl;
}

Salida.close();
}
}
else
{
cout<<"No se puede abrir el archivo"<<endl;
}

/*Esto va leyendo el archivo hasta el caracter que limita ',' o hasta 30 caracteres, despues lo muestra,
para eso agrega esto en opcion 1*/

if (opcion2==1)
{
for (int i=0; i<= e-1; i++)
{
Archivo << "Numero: " << num[i] << ',' << endl;



y tenés que declarar char get[30]


pero antes hacelo todo con switch!thumbup3 creo que asi tiene que andar.
Ya mismo lo pruebo. Una pregunta porque en el while usas "archivo" y no salida? No va salida que es el del ifstream?

Me funciono genial!!!! Muchisimas gracias pero me gustaria saber por que va archivo y no salida en el while y el getline tampoco lo entendi, y de nuevo muchas gracias
Tenes razon, copie y pegue parte de un codigo que tenia, va Salida ahí, me olvidé de cambiarlo.
Ultima pregunta si yo solo quiero ver lo que se encuentra en la opcion 1 (cantidad 1) que tengo que cambiar?
Te anduvo al final? Eso lee lo de la opción 1 creo.
Anduvo barbaro tema es ese que lee lo que se encuentra en la opcion 1 y en la 2 tambien y quiero que lea la 1 nada mas
URLs de referencia