我正在使用创建一个程序C
,我的代码中有这一行:
scanf("%s", &path);
当我编译源文件时,我得到这个警告:
main.c:84:2: warning: format ‘%s’ expects argument of type ‘char *’, but argument 2 has type ‘char (*)[64]’ [-Wformat]
这是path
变量的声明:
char path[64];
为什么我看到这个错误?我该如何解决?
我正在使用创建一个程序C
,我的代码中有这一行:
scanf("%s", &path);
当我编译源文件时,我得到这个警告:
main.c:84:2: warning: format ‘%s’ expects argument of type ‘char *’, but argument 2 has type ‘char (*)[64]’ [-Wformat]
这是path
变量的声明:
char path[64];
为什么我看到这个错误?我该如何解决?
数组已经是一个类似指针的对象(正如 dreamlax 指出的那样)。您不需要&
操作员,因为声明
char path[64];
相当于设置path
一个指向 64 字节内存区域的指针。
格式说明%s
符要求您提供一个char *
,它是一个指向char
. 您正在传递&path
,它是指向数组的指针。您可以只传递path
它自己,它将评估为指向数组第一个元素的指针(与 相同&path[0]
)。
试试这个scanf("%s", path);
,因为我认为path
是一个数组,指向数组的指针就是数组名本身( array == &array )