fopen() y c++

Iniciado por m@o_614, 3 Marzo 2014, 19:30 PM

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

m@o_614

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

0xDani

Prueba std::fopen y std::sprintf.

Saludos.
I keep searching for something that I never seem to find, but maybe I won't, because I left it all behind!

I code for $$$
Hago trabajos en C/C++
Contactar por PM

Gh057

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.
4 d0nd3 1r4 3l gh057? l4 r3d 3s 74n v4s74 3 1nf1n1t4...

m@o_614

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;
}

rir3760

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
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language