[C con Clase] Do-while para verificar apertura de archivo...

Joaquin Pérez Valera joaquinperezvalera en gmail.com
Dom Nov 11 06:28:32 CET 2012


Buen día

Estoy haciendo un programa que necesita abrir un archivo de texto simple
(txt,dat, csv), y para ello utilizo la librería fstream de C++.

Para variar, el código lo he compilado en Linux y Windows de tal manera que
se pueda utilizar en ambas plataformas.
En Linux no he tenido problemas para compilarlo  utilizarlo, pero como
también planeo que haya gente que lo utilice en windows pues tengo que
compilarlo ahí.

El código que estoy utilizando es:

#include <iostream>
#include <string>
#include <cstdlib>
#include <cctype>
#include <fstream>
using namespace std;

int main(int argc, char *argv[])
{
string nombre_archivo;
fstream entrada;


do
  {
  cout << "Filename to open: ";
  //Se solicita el nombre del archivo de comas que se abrira.
  getline(cin, nombre_archivo);
  entrada.open(nombre_archivo.c_str());
  cout << nombre_archivo << endl;
  cout << "Mensaje de apertura de archivo: " << entrada.fail() << endl;
  }
while(entrada.fail());

cout << "adios..." << endl;

return 0;
}

Lo estoy compilando con Dev-C++.

Lo que me pasa con esto es que si pongo el nombre correcto del archivo a la
primera, lo abre correctamente. Pero bueno, lo que hago con el while es que
mientras el valor que arroje la función fail() sea verdadero, se regrese a
las instrucciones entre las llaves.
Antes de llegar al final de las instrucciones en las llaves del loop, hago
que devuelva el nombre que se introdujo.
Eso pasa en Linux y me vuelve a pedir el nombre del archivo. Sin embargo en
Windows no, de hecho lo que hace es mandarme el valor de no abierto (un
valor verdadero, 1).

Digamos que tengo un archivo llamado prueba.txt y pasa lo siguiente

#open.exe
Filename to open: ejemplo
ejemplo
Mensaje de apertura de archivo: 1
Filename to open: prueba.txt
Mensaje de apertura de archivo: 1

Y así sucesivamente, y aunque teclee el nombre correcto no lo abre.

¿Alguien podría darme una mano con esto? ¿Hay algo que se tenga que saber
sobre esto en particular?

De antemano les agradezco su ayuda.

-- 
Saludos

Joaquín Pérez Valera
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20121110/11d8c128/attachment.html>


Más información sobre la lista de distribución Cconclase