我在C中使用fopen將輸出寫入文本文件。該函數聲明爲(其中ARRAY_SIZE
前面已經定義):fopen/fopen_s和寫入文件
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);
}
我的問題:
在編譯時有MVS2008我得到警告:警告C4996: '的fopen':此函數或變量可能是不安全的。考慮使用fopen_s代替。我沒有看到關於
fopen_s
的很多信息,以便我可以更改我的代碼。有什麼建議麼?是否可以指示
fprintf
將數字以期望的數字精度寫入文件?如果我使用的是long double
,那麼我認爲我的答案是好的,直到小數點後15位。我對嗎?
對fopen()沒有任何遠程不安全的想法,但MS中的一些人似乎已經失去了他們的集體大理石而不是以空字符結尾的字符串作爲參數的函數。 – 2010-04-04 17:04:02
我相信這是微軟將所有人鎖定到僅限於Windows的編程的情節。 – stackptr 2016-02-16 17:08:40