Foro de elhacker.net

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
  1. #include <iostream>
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #define MAX 40
  5.  
  6. using namespace std;
  7.  
  8. int main()
  9. {
  10.    FILE *fd;
  11.    int car;
  12.    char archivo[MAX],nombre[MAX];
  13.    cout << "Que archivo deseas abrir: " << endl;
  14.    cin >> nombre;
  15.    sprintf(archivo,"%s.txt",nombre);
  16.    if((fd = fopen(archivo,"r"))!= NULL)
  17.    {
  18.        while((car = fgetc(fd)) != EOF)
  19.           cout << "" << car;
  20.    }
  21.    else
  22.       cout << "No se pudo abrir archivo" << endl;
  23.    return 0;
  24. }
  25.  


Título: Re: fopen() y c++
Publicado por: rir3760 en 3 Marzo 2014, 23:58 pm
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
  1. // ...
  2. while((car = fgetc(fd)) != EOF)
  3.   cout << "" << car;
  4.  
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
  1. while((car = fgetc(fd)) != EOF)
  2.   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