SoloCodigo

Programación General => C/C++ => Mensaje iniciado por: Bool en Viernes 3 de Octubre de 2008, 09:41

Título: ferror en linux
Publicado por: Bool en Viernes 3 de Octubre de 2008, 09:41
Tengo este código:

Código: Text
  1.  
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4.  
  5. int main()
  6. {
  7.     FILE *pf = NULL;
  8.     char *cadena = "esta cadena nunca sera escrita";
  9.  
  10.     if ((pf = fopen("datos", "r")) == NULL)
  11.     {
  12.         perror("datos");
  13.         return EXIT_FAILURE;
  14.     }
  15.     fprintf(pf, "%sn", cadena);
  16.  
  17.     if (ferror(pf))
  18.     {
  19.         perror("Error al escribir en el fichero");
  20.         clearerr(pf);
  21.     }
  22.     fclose(pf);
  23. }
  24.  
  25.  
  26.  

Con code:blocks en windows va perfecto, sin embargo en mi linux con gcc, el segundo perror no lo ejecuta... asi  que ferror siempre devuelve un cerapio :S

Alguién sabe por qué no puede funcionar?

Venga, gracias anticipadas :)
Título: Re: ferror en linux
Publicado por: m0skit0 en Viernes 3 de Octubre de 2008, 10:47
Es probable que al haber definido el fichero como sólo lectura fprintf() no dé ningún error, simplemente se ignore, es decir, no se escribe nada en el fichero, pero tampoco se genera un error.