Me llamo Lucas y hace rato que me gusta la programación y decidí meterme un toke mas en esto. Tengo 18 años y soy de argentina.
Ahora les dejo mi problemita estoy haciendo un trabajito(mas abajo dejo el codigo) El tema es que cuando uso "cin.getline(elnombredelavariable,xxxx);" me dice que no pudo abrir el archivo. osea el tema va asi el usuario debe poder ingresarle el nombre al archivo y con cin.getline(); no me funciona (en ciertos casos como el que les voy a psar ahora), estuve viendo que podria llegar a causar el problema y llegue a que en la función menu cuando le coloco al switch una variable cuyo valor debe ser ingresada para el usuario me salta el problema. si le saco eso el codigo funciona de 10.
Alguno me podria ayudar?
Agradezco mucho su ayuda
Saludos
mi mail: [email protected]
Código:
#include <iostream> #include <fstream> #include <stdlib.h> using namespace std; int crear_nuevo_mensaje(); int menu(); int main() { menu(); system ("pause"); } int menu(){ int e; cin >> e; switch (e){ case 1: crear_nuevo_mensaje(); break; } return 0; } int crear_nuevo_mensaje(){ char nombreArchivo[250]; //contendra el nombre del archivo char buffer[588]; //contendra el contenido del usuario char asunto[250]; //solicitamos el nombre de archivo cout << "Nombre del archivo: "; cin.get (nombreArchivo, 250); //eliminamos el caracter de nueva linea despues de introducir el nombre del archivo //si no lo eliminamos, getline, recoge del buffer el salto de linea, y es como si // hubieramos pulsado intro sin introducir ningun caracter. cin.ignore(1,'\n'); //abrimos el archivo para escritura. //Si el archivo ya existe, su contenido se elimina ofstream fout(nombreArchivo); //si no se puede abrir... if(fout.fail()) { cout << "No se puede abrir el archivo " << nombreArchivo << endl; return 1; } fout << "Esta linea se escribe directamente en el archivo\n"; //solicitamos texto al usuario para añadirlo en el archivo cout << "Escribe el texto para añadirlo en el archivo: "; //recogemos un máximo de 254 caracteres. El ultimo sera el final de linea '\0' cin.getline(buffer,588); //guardamos la información introducida en el archivo fout << buffer << "\n"; //cerramos fout.close(); //mostramos el contenido del archivo //abrimos el archivo para lectura ifstream fin(nombreArchivo); //comprobamos si se ha abierto correctamente if(fin.good()) { char ch; cout << "\n***** contenido del archivo *****\n"; //vamos leyendo caracter a caracter y lo vamos mostrando. while (fin.get(ch)) cout << ch; cout << "\n***** fin contenido del archivo *****\n"; //cerramos fin.close(); } return 0; }