问题描述
我想知道是否有更好的方法来关闭数组中的文件指针,而不是让 for 循环遍历数组:
argc -= optind; argv += optind;
FILE *inputfiles[argc - 1];
int i;
for (i = 0; i < argc; i ++)
inputfiles[i] = fopen(argv[i],"r");
fnctn(inputfiles);
int f;
for (f = 0; f < argc; f++)
fclose(inputfiles[f]);
解决方法
fcloseall
作为 GNU 扩展存在。要知道这也会关闭 stdin
、stdout
和 stderr
。
standard C 中没有类似物。
您也可以简单地退出程序,并依靠操作系统来清理商店。这通常被认为是不好的做法。
尽管我假设它主要是模拟代码,但应该注意的是,您的示例中存在一些逐一错误。
int i;
for (i = 0; i < argc - 1; i ++)
inputfiles[i] = fopen(argv[i + 1],"r");
int f;
for (f = 0; f < argc - 1; f++)
fclose(inputfiles[f]);
还有一种情况,argc
是 1
,您将声明一个零大小的数组 (FILE *inputfiles[1 - 1];
),即 invalid in ISO C.