我觉得下面的代码是正常的(malloc/free也差不多):
int foo(){
FILE *fp = fopen("test.in", "r");
int i;
for(i = 0; i < NUM; i ++){
if(Match(fp, i)){
fclose(fp);
return i;
}
}
fclose(fp);
return 0;
}
正如我们所见,fclose(fp)
在代码中出现了两次。如果函数 foo 中有其他 return 语句,它会出现更多。但是,麻烦的是我要多次写fclose(fp)
。一种解决方案只是一个函数的一次返回。但是,多次返回有时很有用。还有其他解决办法吗?
PS: 据我所知,lisp 中有一个宏(with-open-file)。
(with-open-file (stream-var open-argument*)
body-form*)
它可以为我们打开和关闭文件。
最佳答案
使用 break
通常有帮助:
int foo() {
FILE *fp = fopen("test.in", "r");
int i, result;
result = 0;
for(i = 0; i < NUM; i ++){
if(Match(fp, i)){
result = i;
break;
}
}
fclose(fp);
return result;
}
关于c - 如何确保 malloc/free fopen/fclose 匹配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6338787/