Estoy intentando abrir este fichero de esta forma:
#include <stdio.h>
int main()
{
FILE *fp, *fpp;
if(fp = fopen("C:/users/robert/desktop/entrada", "r")==NULL) puts("error archivo entrada.");
if(fpp = fopen("C:/users/robert/desktop/salida", "w")==NULL) puts("error archivo salida.");
.
.
.
.
.
.
el problema es que al ejecutar el programa hace el primer if con el primer puts y segundos despues se cuelga y deja de funcionar, la ruta del archivo es la correcta.
al compilar da los siguientes warnings (codeblocks):
Citarwarning: assignment makes pointer from integer without a cast [enabled by default]
warning: assignment makes pointer from integer without a cast [enabled by default]
alguna idea?
Se debe a que faltan paréntesis y por ello las condiciones no se evalúan en el orden correcto. Ademas no debes generar los mensajes de error cuando esa operación la puedes delegar a la función perror:
#include <stdio.h>
#include <stdlib.h>
#define NOM_ENTRADA "C:/users/robert/desktop/entrada"
#define NOM_SALIDA "C:/users/robert/desktop/salida"
int main(void)
{
FILE *entrada;
FILE *salida;
if ((entrada = fopen(NOM_ENTRADA, "r")) == NULL){
perror(NOM_ENTRADA);
return EXIT_FAILURE;
}
if ((salida = fopen(NOM_SALIDA, "w")) == NULL){
perror(NOM_SALIDA);
fclose(entrada);
return EXIT_FAILURE;
}
/* ... */
return EXIT_SUCCESS;
}
Un saludo
mm no se que funcion es perror, de hecho, tampoco se me permite trabajr con stdlib.h :(
Cita de: SoyelRobert en 19 Enero 2014, 19:42 PM
mm no se que funcion es perror............................
He aquí una referencia a la función perror (http://www.cplusplus.com/reference/cstdio/perror/)
Cita de: SoyelRobert en 19 Enero 2014, 19:42 PM
mm ....................... de hecho,tampoco se me permite trabajar con stdlib.h :(
Pues un copy-paste, cortesía del maestro rir3760:
#include <stdio.h>
#define NOM_ENTRADA "C:/users/robert/desktop/entrada"
#define NOM_SALIDA "C:/users/robert/desktop/salida"
int main(void)
{
FILE *entrada;
FILE *salida;
if ((entrada = fopen(NOM_ENTRADA, "r")) == NULL){
puts("error archivo entrada.");
return 1;
}
if ((salida = fopen(NOM_SALIDA, "w")) == NULL){
puts("error archivo salida.");
fclose(entrada);
return 2;
}
/* ... */
return 0;
}
¡¡¡¡ Saluditos! ..... !!!!
(http://st.forocoches.com/foro/images/smilies/aaaaa.gif)