我想要选择是否将结果写入文件,所以我会有一个文件名 fnm,如果它是空白的 (""
) 我不会创建/写入文件。所以基本上我有:
FILE* f;
if(fnm!=""){
//open file for writing
f = fopen(fnm.c_str(), "a+");
}
/*do some other stuff*/
for(int idx=0;idx<n;idx++){
printf("%d\t\t%d\t\t%d\n", k, idx, A[idx]);
if(f!=NULL){
fprintf(f,"%d\t\t%d\t\t%d\n", k, idx, A[idx]);
}
}
if(f!=NULL){
//close the file
fclose(f);
}
现在,f
在声明 FILE* f;
时实际上并没有初始化为 NULL
。如果我手动初始化 FILE* f=NULL;
,它工作正常,所以这主要是我对默认初始化感到好奇。我之前用谷歌搜索过,但答案是针对 C 的,他们说它是初始化为 NULL
。
最佳答案
视情况而定。
如果您在任何函数外定义f
,然后它将被初始化为一个空指针。
如果你在一个函数中定义f
,那么它会被初始化为垃圾。
在 C 和 C++ 中也是如此。
关于c++ - FILE *f 在 C++ 中初始化为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24619520/