2010-11-15 14 views

Respuesta

19
#include <stdio.h> 

void adx_store_data(const char *filepath, const char *data) 
{ 
    FILE *fp = fopen(filepath, "ab"); 
    if (fp != NULL) 
    { 
     fputs(data, fp); 
     fclose(fp); 
    } 
} 
1

Algo así debe hacerlo:

#include <stdio.h> 
: : : 
int adxStoreData (char *filepath, char *data) { 
    int rc = 0; 

    FILE *fOut = fopen (filepath, "ab+"); 
    if (fOut != NULL) { 
     if (fputs (data, fOut) != EOF) { 
      rc = 1; 
     } 
     fclose (fOut); // or for the paranoid: if (fclose (fOut) == EOF) rc = 0; 
    } 

    return rc; 
} 

Se comprueba diversas condiciones de error como el archivo de problemas de E/S y devuelve 1 (verdadero) si bien, 0 (falso) en otro caso . Esto es probablemente algo que debería estar haciendo, incluso en PHP.

+2

¿qué tal el fclose (fOut)! = EOF? ;-) –

+1

y tal vez también debería haber algunas afirmaciones en filepath y data para asegurarse de que ninguno de los dos sea NULL. ;-) –

+2

Comprobar si 'fclose()' tuvo éxito no es solo paranoia. La salida es típicamente amortiguada; es probable que nada se escriba en el archivo hasta la llamada 'fclose()'. –

Cuestiones relacionadas