fopen / fopen_s et l'écriture de fichiers

J'utilise fopen en C pour écrire la sortie dans un fichier texte. La déclaration de la fonction est (où ARRAY_SIZE a été défini précédemment):

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);  
}  

Mes questions:

  1. Sur la compilation avec MVS2008-je obtenir de l'avertissement: avertissement C4996: 'fopen": Cette fonction ou une variable peut être dangereux. Pensez à utiliser fopen_s à la place. Je n'ai pas vu beaucoup d'informations sur fopen_s pour que je puisse changer mon code. Toutes les suggestions?

  2. Peut-on instruire fprintf pour écrire les nombres souhaitée de la précision numérique à un fichier? Si je suis en utilisant long double alors je suppose que mes réponses sont bonnes jusqu'à 15 chiffres après la virgule. Suis-je le droit?

  • Il n'y a rien à distance dangereux sur fopen(), mais quelques personnes à MS semblent avoir perdu de leur collectif de billes sur des fonctions qui prennent null chaînes de caractères comme des paramètres.
  • Je crois que tout ceci est un complot de Microsoft pour les gens de verrouillage dans Windows uniquement de la programmation.