fopen不兼容类型char(*)[9]而不是C中的char(*)

时间:2014-07-31 09:02:19

标签: c char fopen

我在C中的程序读取文件中的数据以初始化变量,但它不会打开文件。当它达到fopen时失败。 Xcode为fopen和printf输出以下警告。我理解错误,但我不知道如何纠正错误,我尝试了许多技巧,但它没有做到,有人可以帮助我吗?我只是希望我的程序打开 Try1.txt

不兼容的指针类型传递' char(*)[9]'到const char *'

类型的参数

所以这是我的主要功能中的代码:

FILE *infile = NULL;
const char infilename [] = "Try1.txt";

infile = fopen(&infilename, "r");
if (infile == NULL)
{
    printf("Failed to open file: %s\n", &infilename);
    return 1;
}

请注意,程序在到达if循环之前停止,因为它从不打印。我试图初始化尺寸并添加' \ 0'在我的字符串末尾也是。

2 个答案:

答案 0 :(得分:5)

这是因为&infilename,它为您提供了一个指向字符数组的指针。删除地址操作符,它将起作用。

答案 1 :(得分:1)

问题

&infilename是指向数组的指针,这意味着它是指向char (*)[9]类型对象的指针。

但是,infilename将是char (*)类型的指针,它指向数组的第一个元素。

修复

infile = fopen(infilename, "r");