我正在使用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];
为什么我看到这个错误?我该如何解决?
答案 0 :(得分:8)
数组已经是一个类似指针的对象(正如dreamlax指出的那样)。自声明
以来,您不需要&
运算符
char path[64];
相当于将path
设置为指向64字节内存区域的指针。
答案 1 :(得分:4)
%s
格式说明符要求您提供char *
,这是指向char
的指针。您正在传递&path
,它是指向数组的指针。你可以自己传递path
,它将评估为指向数组第一个元素的指针(与&path[0]
相同)。
答案 2 :(得分:1)
请尝试此scanf("%s", path);
,因为我认为path
是一个数组,指向数组的指针是数组名称本身(array ==& array)