Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Abrir documento de texto

Estas en el tema de Abrir documento de texto en el foro de C/C++ en Foros del Web. Gente como podria hacer para que el usuario ponga el nombre del documento y lo pueda abrir para leerlo por ejemplo, ya intente varias cosas ...
  #1 (permalink)  
Antiguo 16/03/2014, 09:38
 
Fecha de Ingreso: marzo-2014
Ubicación: Buenos Aires
Mensajes: 59
Antigüedad: 10 años, 1 mes
Puntos: 0
Abrir documento de texto

Gente como podria hacer para que el usuario ponga el nombre del documento y lo pueda abrir para leerlo por ejemplo, ya intente varias cosas pero no me sale :/
  #2 (permalink)  
Antiguo 16/03/2014, 09:57
 
Fecha de Ingreso: enero-2012
Ubicación: Buenos Aires
Mensajes: 745
Antigüedad: 12 años, 3 meses
Puntos: 35
Respuesta: Abrir documento de texto

Muestranos qué has intentado. El problema donde está? En pedir el nombre del documento o en abrirlo? Quieres leerlo desde tu programa o que se abra el programa por defecto (por ejemplo, el bloc de notas)?

  #3 (permalink)  
Antiguo 16/03/2014, 10:40
 
Fecha de Ingreso: marzo-2014
Ubicación: Buenos Aires
Mensajes: 59
Antigüedad: 10 años, 1 mes
Puntos: 0
Respuesta: Abrir documento de texto

creo que el problema esta en abrirlo, y lo que yo quiero leerlo desde el programa, yo por ejemplo hice varios codigos pero este estaba probando

Código C++:
Ver original
  1. #include <fstream>
  2. #include <iostream>
  3. #include <string>
  4. using namespace std;
  5.  
  6. int main()
  7. {
  8.     char nombre[11];
  9.     FILE *archivo;
  10.  
  11.     cout << "Ingrese el nombre del archivo" << endl;
  12.     cin >> nombre;
  13.  
  14.     archivo = fopen(nombre, "r");
  15.  
  16.     if(archivo)
  17.       cout << "creado (ABIERTO)" << endl;
  18.    else
  19.    {
  20.       cout << "Error (NO ABIERTO)" << endl;
  21.       return 1;
  22.    }
  23.  
  24.    if( !fclose(archivo) )
  25.       cout << "Fichero cerrado" << endl;
  26.    else
  27.    {
  28.       cout << "Error: fichero NO CERRADO" << endl;
  29.       return 1;
  30.    }
  31.  
  32.     return 0;
  33. }
  #4 (permalink)  
Antiguo 16/03/2014, 13:38
 
Fecha de Ingreso: enero-2012
Ubicación: Buenos Aires
Mensajes: 745
Antigüedad: 12 años, 3 meses
Puntos: 35
Respuesta: Abrir documento de texto

Ese debería funcionar. Fijate de usar if (archivo != NULL) en lugar de if (archivo).
  #5 (permalink)  
Antiguo 16/03/2014, 14:45
 
Fecha de Ingreso: marzo-2014
Ubicación: Buenos Aires
Mensajes: 59
Antigüedad: 10 años, 1 mes
Puntos: 0
Respuesta: Abrir documento de texto

lo cambie pero sigue sin andar, entra en la condición de error no abierto, no se que esta mal, tengo el txt en la carpeta del proyecto estará bien?
  #6 (permalink)  
Antiguo 16/03/2014, 17:24
 
Fecha de Ingreso: enero-2012
Ubicación: Buenos Aires
Mensajes: 745
Antigüedad: 12 años, 3 meses
Puntos: 35
Respuesta: Abrir documento de texto

Mmm no, si estás usando codeblocks el archivo ejecutable va a estar en proyecto/bin/debug/archivo.exe o proyecto/bin/release/archivo.exe. Tenes que poner tu archivo .txt en alguno de esos, en lugar de proyecto/. Seguro es eso.

  #7 (permalink)  
Antiguo 17/03/2014, 03:24
 
Fecha de Ingreso: marzo-2014
Ubicación: Buenos Aires
Mensajes: 59
Antigüedad: 10 años, 1 mes
Puntos: 0
Respuesta: Abrir documento de texto

si uso code blocks, e hice lo que dijiste pero tampoco funca :/
  #8 (permalink)  
Antiguo 17/03/2014, 12:54
Avatar de vangodp  
Fecha de Ingreso: octubre-2013
Mensajes: 934
Antigüedad: 10 años, 7 meses
Puntos: 38
Respuesta: Abrir documento de texto

Código C++:
Ver original
  1. #include <iostream>
  2. #include <fstream>
  3. #include <string>
  4.  
  5. using namespace std;
  6.  
  7. int main () {
  8.    
  9.     string linea_actual;
  10.     int lineas; //cantidade de lineas a leer
  11.    
  12.     string nombre;
  13.     cout << "cuantas lineas tiene el archivo??";
  14.     cin >> lineas;
  15.     cout << "Escriba el nombre del archivo: ";
  16.     cin >> nombre;
  17.    
  18.     ifstream Archivo ( nombre );
  19.    
  20.     // si existe el archivo
  21.     if ( Archivo.is_open() ) {
  22.    
  23.         for ( int i = 0; i < lineas; i++ ) {
  24.             //lee una linea del archivo texto.txt hasta encontrar \n, lo guarda en liena_actual y
  25.             //se posiciona en la seguinte linea
  26.             getline ( Archivo, linea_actual );
  27.             //imprime lo que guardamos en liena_actual
  28.             cout << "Linea:" << i+1<< " "  << linea_actual << endl;
  29.         }
  30.        
  31.     }
  32.     // caso no exista el archivo
  33.     else {
  34.         cout << "No es posible abrir el archivo" << endl;
  35.     }
  36.    
  37.     Archivo.close();
  38.     //system ( "pause" );
  39.     return 0;
  40. }

Hay muchas formas de hacerlo.
Depende de lo que quieres...
Si quieres leerlo completo este te puede valer.
pero hay mas factores, te digo unos ejemplos para que entiendas.
Si lo que quieres es imprimir este código te sirve, te lo imprime todas las lineas. Pero imaginese que lo que quieres es trabajar con números de este archivo, tendrías que guardarlo en variables para hacer los cambios pertinentes.
Entonces este creo que deberías ver estos vídeos:
http://www.minidosis.org/#/actividad...nUnFichero.vid
http://www.minidosis.org/#/actividad...eUnFichero.vid
http://www.minidosis.org/#/actividad...DeApertura.vid
Si te sobra tiempo verlos todos estos XDDD
http://www.minidosis.org/#/temas/Cpp.EntradaSalida

Suerte XDD

PD:
En el código que te deje...si en la ultima linea no hay un \n (Enter), imprime repetidamente la ultima linea.

Última edición por vangodp; 17/03/2014 a las 13:06
  #9 (permalink)  
Antiguo 17/03/2014, 15:47
 
Fecha de Ingreso: marzo-2014
Ubicación: Buenos Aires
Mensajes: 59
Antigüedad: 10 años, 1 mes
Puntos: 0
Respuesta: Abrir documento de texto

Yo lo que quiero es solo leerlo nada mas, creo que la 1ra parte me sirve xD

Etiquetas: int
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:30.