Estoy creando un progtwig usando C
, y tengo esta línea en mi código:
scanf("%s", &path);
Cuando compilo el archivo fuente, recibo esta advertencia:
main.c:84:2: warning: format '%s' expects argument of type 'char *', but argument 2 has type 'char (*)[64]' [-Wformat]
Y esta es la statement para la variable de path
:
char path[64];
¿Por qué estoy viendo este error? ¿Y cómo puedo solucionarlo?
Una matriz ya es un objeto parecido a un puntero (como señala dreamlax). No necesitas el operador &
, ya que declara
char path[64];
es equivalente a establecer la path
a un puntero a una región de memoria de 64 bytes.
El especificador de formato %s
requiere que suministre un char *
, que es un puntero a char
. Estás pasando &path
, que es un puntero a una matriz. Solo puede pasar la path
por sí misma, lo que se evaluará como un puntero al primer elemento de la matriz (igual que &path[0]
).
intente este scanf("%s", path);
en su lugar porque creo que path
es una matriz y un puntero a una matriz es el nombre de la matriz en sí (array == & array)