problemas al trabajar con ficheros [C]

Iniciado por SoyelRobert, 19 Enero 2014, 18:09 PM

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

SoyelRobert

Estoy intentando abrir este fichero de esta forma:

Código (cpp) [Seleccionar]

#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?
getting louder!

rir3760

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

SoyelRobert

mm no se que funcion es perror, de hecho, tampoco se me permite trabajr con stdlib.h :(
getting louder!

leosansan

#3
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

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:

Código (cpp) [Seleccionar]

#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! ..... !!!!