通常,C 文件 I/O 是使用FILE*
标准库函数完成的。
在 C 中,也可以有一个const 指针,其中指针的地址不能改变(但它指向的值可以)。
我想知道这是否可以应用于FILE*
,所以写了这个小程序来测试这个:
#include <stdio.h>
int main(void) {
FILE* const file = fopen("somefile.txt", "w");
if (file != NULL) {
fprintf(file, "%s\n", "So this works? That's just swell!");
}
return 0;
}
这编译得很好,并且使用 GCC 在 Ubuntu/Linux 16.04 上按预期工作(该文件包含我期望的字符串),但我不确定这个成语是否是一个好主意——该FILE
类型在设计和处理上是不透明的是特定于实现的。
因为不能保证任何 C 库实现都不会尝试更改FILE
指针的地址,所以在 C 中执行 I/O 时不使用这种方法是否更安全?