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
Prueba std::fopen y std::sprintf.
Saludos.
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.
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é?
#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;
}
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é?
// ...
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:
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