格式'%s'需要'char *'类型的参数,但参数2的类型为'char(*)[64]

时间:2013-10-18 00:21:41

标签: c

我正在使用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];

为什么我看到这个错误?我该如何解决?

3 个答案:

答案 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)