Programación General > C/C++
Error Codigo!! Urge !! Problema al Leer Archivo !!
Phass:
Hola, estoy intentando hacer una práctica en la que tengo que leer un archivo txt, pero no se por qué no se abre, si no que el programa en ejecucion se queda parado sin hacer nada...
Parte del código es:
--- Código: C++ --- cout << endl << endl << "--> Ruta del fichero : "; cin >> ruta; ruta_archivo = new char [ruta.size()-1]; strcpy (ruta_archivo, ruta.c_str());
Ahora, "ruta_archivo" se lo paso a una función que, a parte de más cosas, abre el fichero, haciendo:
--- Código: C++ --- ifstream Puntos_Muestra (route); // Se comprueba que el fichero se ha abierto correctamente if (!Puntos_Muestra) { // Código que se ejecuta bien si no se espcifica ruta o mal el nombre del fichero } else { // El programa se queda parado, supongo que aquí }
Muchas gracias y un saludo.
m0skit0:
No pones la declaración de ruta_archivo.
Usa la clase string en vez de char*, que para eso tienes C++ ;)
Phass:
la declaración es:
char * ruta_archivo;
string ruta;
luego convierto el string a char* y ese char * es el parametro q l paso a la funcion donde luego se ejecuta lo anterior, pero es que no sé por qué no va... :(
pongo aquí parte de la funcion que abre el archivo por si acaso :
--- Código: C++ ---ifstream Puntos_Muestra (route); if (!Puntos_Muestra) { // Ejecucion correcta cout << endl << endl; cout << "No se pudo abrir el fichero. No existe o la ruta no es valida."; cout << endl << endl; exit(1); } else { // Ejecución errónea, aquí se para el programa.... cout << "hola"; // Comprobacion para ver que se abre el archivo float x, f_x_y; vector<float> componentes (n_var); int n_puntos_muestra = 0; float valor_fitness = 0; Puntos_Muestra >> x; while (!Puntos_Muestra.eof()) { for (int j = 0; j < n_var; j++) { componentes[j] = x; Puntos_Muestra >> x; } float output; output = pob[i].Calcula_Output (componentes, straight_line); float t = output - f_x_y; valor_fitness += pow (t, 2); n_puntos_muestra++; Puntos_Muestra >> x; } valor_fitness /= n_puntos_muestra; pob[i].fitness = valor_fitness; } }
m0skit0:
Todos los nuevos en C caen en el mismo problema :P
--- Código: C ---char * ruta_archivo; Aquí estás declarando un puntero a una cadena de caracteres, PERO no reservas memoria para ello. Por tanto tienes 0 espacio para tus caracteres. Tienes que hacer algo como
--- Código: C ---char ruta_archivo[256]; Para reservar memoria para 255 caracteres, o bien usar malloc() (y free()) para reservar memoria dinámicamente.
De todas formas no necesitas char* para nada. Usa string, es mucho más cómodo.
Phass:
Hola, al final declaro un string (ruta), se lo paso a la funcion y hago:
ifstream Puntos_Muestra (ruta.c_str());
Pero el problema persiste, es decir, parece que abre el archivo, pero es como si reconociera el nombre y que está ahí pero sin embargo no sigue ejecutando sentencias...
PD: lo de reservar memoria sí me había dado cuenta pero más tarde, la verdad q era un fallo técnico algo grave :P jejeje
Gracias por dedicarme tiempo eh? l verdad es que me corre algo de prisa y por mas vueltas que le doy no consigo dar con el error :S
Navegación
[#] Página Siguiente
Ir a la versión completa