Sto usando fopen in C per scrivere l'output in un file di testo. La dichiarazione di funzione è (dove ARRAY_SIZE
è stato definito in precedenza):fopen/fopen_s e scrittura su file
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);
}
Le mie domande:
Sulla compilation con MVS2008 ottengo l'avvertimento: avviso C4996: 'fopen': questa funzione o variabile potrebbe essere pericoloso Prendi in considerazione l'utilizzo di fopen_s. Non ho visto molte informazioni su
fopen_s
in modo che possa cambiare il mio codice. Eventuali suggerimenti?Si può ordinare
fprintf
di scrivere numeri con una precisione numerica desiderata in un file? Se sto usandolong double
allora presumo che le mie risposte siano valide fino a 15 cifre dopo il punto decimale. Ho ragione?
Non c'è nulla di lontanamente pericoloso su fopen(), ma alcune persone in MS sembrano aver perso le loro biglie collettive su funzioni che accettano stringhe con terminazione nulla come parametri. –
Credo che questo sia tutto un complotto di Microsoft per bloccare le persone nella programmazione solo per Windows. – stackptr