Problema con el control de flujo en lectura y escritura de archivos en C++

Iniciado por sadfud, Noviembre 13, 2016, 03:15:06 PM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Noviembre 13, 2016, 03:15:06 PM Ultima modificación: Noviembre 13, 2016, 04:00:03 PM por Gabriela
Buenas underc0deanos, esta vez vengo con un problema al realizar un ejercicio en C++, el enunciado es el siguiente:
Código: php
Escribe un programa que genere un archivo output.txt en el que aparezcan invertidos los números enteros positivos que haya en otro archivo input.txt. Contempla dos alternativas de formato del fichero input.txt:
• En la primera, cada línea contiene un número entero y termina en una línea con un 0 (centinela). Por ejemplo:
input.txt

1234
56
1000
-987
54321
0
<eof>
output.txt
4321
65
0001
12345
<eof>


El codigo que he escrito es el siguiente:
Código: cpp
#include <iostream>
#include <fstream>
#include <string>
using namespace std;

int inverso(int num);
void lectura();
void escritura(int inverso);
int main() {
lectura();
system("pause");
return 0;
}

int inverso(int num) {
int auxiliar = 0;
do {
auxiliar = auxiliar * 10 + (num % 10);
num = num / 10;
} while (num > 0);
return num;
}

void escritura(int inverso) {
ofstream archivo;
archivo.open("output.txt");
archivo << inverso;
archivo.close();
}

void lectura() {
ifstream archivo;
int numero;
archivo.open("input.txt");
while (archivo >> numero){
escritura(inverso(numero));
}
archivo.close();
}


El programa evidentemente no funciona
He colocado un breakpoint en la linea "archivo.open(input.txt);" y en tiempo de ejecuccion obtengo el siguiente error "{_Filebuffer={_Pcvt=0x00000000 <NULL> _Mychar=0 '\0' _Wrotesome=false ...} }"

A alguien se le ocurrre cual puede ser el fallo?

Gracias de antemano
Mi blog: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Si necesitas ayuda, no dudes en mandar MP

Supongo que el error es que no encuentra el archivo input.txt. Cuando estas depurando un programa C++ en Visual Studio, por defecto el Working Directory es el directorio del proyecto (no el de la solución ni tampoco el directorio Debug).

CitarDebugging category
Working Directory
Specifies the working directory of the program being debugged, relative to the project directory where your EXE is located. If you leave this blank, the working directory is the project directory. For remote debugging, the project directory will be on the remote server.
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Puedes cambiar el Working Directory ya sea configurando el proyecto o desde el código del programa, o por otro lado podrías direccionar al archivo en base al Working Directory (el path del WD lo puedes obtener con _getcwd() No tienes permitido ver los links. Registrarse o Entrar a mi cuenta) o con una ruta absoluta (No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

fuente:
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Saludos