我是c编程的新手。我正在学习c中的指针,我测试了简单的文件操作。为了克服覆盖txt文件中的值。我在全局声明文件,在方法内部我将本地指针地址初始化为全局指针地址。我的意图是使用相同的内存位置。通过使用相同的内存位置执行文件操作。请在下面找到我的程序。
FILE *f;// global pointer.
void myTest(char* val) {
//d is local pointer.
FILE *d = fopen("file.txt", "w");
f=&d;
if (f == NULL)
{
printf("Error opening file!\n");
exit(1);
}
// print the data
fprintf(f, "%s\n",val);
}
int main(void) {
myTest("test");
fclose(f);
}
警告:从不兼容的指针类型分配[-Wincompatible-pointer-types] F =&安培; d; 运行bin文件后,我得到了 分段错误(核心转储)错误。
答案 0 :(得分:4)
d
是FILE *
,因此&d
是FILE **
。这不能分配给f
FILE *
。
你想要的是f=d
。或者完全摆脱d
:
f = fopen("file.txt", "w");