Estoy usando fopen en C para escribir el resultado en un archivo de texto. La declaración de la función es (donde ARRAY_SIZE
se ha definido anteriormente):fopen/fopen_s y escribir en los archivos
void create_out_file(char file_name[],long double *z1){
FILE *out;
int i;
if((out = fopen(file_name, "w+")) == NULL){
fprintf(stderr, "***> Open error on output file %s", file_name);
exit(-1);
}
for(i = 0; i < ARRAY_SIZE; i++)
fprintf(out, "%.16Le\n", z1[i]);
fclose(out);
}
Mis preguntas:
En recopilatorio con MVS2008 que recibo de la advertencia: Se advierte C4996: 'fopen': Esta función o variable puede ser inseguro Considera usar fopen_s en su lugar. No he visto mucha información en
fopen_s
para poder cambiar mi código. ¿Alguna sugerencia?¿Se puede indicar
fprintf
para escribir números con la precisión numérica deseada en un archivo? Si estoy usandolong double
entonces supongo que mis respuestas son buenas hasta 15 dígitos después del punto decimal. ¿Estoy en lo cierto?
No hay nada remotamente inseguro acerca de fopen(), pero algunas personas en MS parecen haber perdido sus mármoles colectivos sobre las funciones que toman cadenas terminadas en nulo como parámetros. –
Creo que todo esto es una trama de Microsoft para bloquear a las personas en la programación solo de Windows. – stackptr