Test Foro de elhacker.net SMF 2.1

Programación => Programación C/C++ => Mensaje iniciado por: m@o_614 en 3 Marzo 2014, 19:30 PM

Título: fopen() y c++
Publicado por: m@o_614 en 3 Marzo 2014, 19:30 PM
Saludos

estoy empezando un código en c++ en el cual tengo que usar fopen para abrir un archivo y sprintf, pero no entiendo por qué en c si me funcionan perfectamente y en c++ me aparece un error que dice:

fopen was not declared in this scope, y lo mismo dice para sprintf
Título: Re: fopen() y c++
Publicado por: 0xDani en 3 Marzo 2014, 20:01 PM
Prueba std::fopen y std::sprintf.

Saludos.
Título: Re: fopen() y c++
Publicado por: Gh057 en 3 Marzo 2014, 20:10 PM
hola m@o_614, no haz mostrado el código, sin embargo supongo que no le estás agregando la cabecera correspondiente a dichas funciones; por eso te indica el compilador "no ha sido declarado..."
la cabecera es la de ingreso / salida estándar, la <stdio.h>, o bien no haz declarado el espacio de trabajo, "using namespace std". saludos.
Título: Re: fopen() y c++
Publicado por: m@o_614 en 3 Marzo 2014, 21:33 PM
muchas gracias por sus respuestas, tienen razon había olvidado ponerle las librerias, apenas estoy empezando a programar en c++, siempre lo habia hecho en c. con el código todavía tengo problemas, tengo que hacer que me lea un archivo de texto y que lo imprima en pantalla, pero me imprime basura y no entiendo por qué?

Código (cpp) [Seleccionar]
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#define MAX 40

using namespace std;

int main()
{
    FILE *fd;
    int car;
    char archivo[MAX],nombre[MAX];
    cout << "Que archivo deseas abrir: " << endl;
    cin >> nombre;
    sprintf(archivo,"%s.txt",nombre);
    if((fd = fopen(archivo,"r"))!= NULL)
    {
        while((car = fgetc(fd)) != EOF)
           cout << "" << car;
    }
    else
       cout << "No se pudo abrir archivo" << endl;
    return 0;
}
Título: Re: fopen() y c++
Publicado por: rir3760 en 3 Marzo 2014, 23:58 PM
Cita de: m@o_614 en  3 Marzo 2014, 21:33 PMcon el código todavía tengo problemas, tengo que hacer que me lea un archivo de texto y que lo imprima en pantalla, pero me imprime basura y no entiendo por qué?
Código (cpp) [Seleccionar]
// ...
while((car = fgetc(fd)) != EOF)
   cout << "" << car;
El problema ocurre porque la variable "car" es de tipo int y la imprimes tal cual. En su lugar debes utilizarla para generar un carácter:
Código (cpp) [Seleccionar]
while((car = fgetc(fd)) != EOF)
   cout << char(car);


Y las comillas dobles "" están demás (no se cual fuera tu intención con ellas). Por ultimo si estas aprendiendo C++ deberías utilizar su biblioteca estándar.

Un saludo