我在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