Advertencia en el uso de sprintf para rellenar un miembro de una estructura.
Estoy tratando de llenar una matriz de caracteres desde un puntero de estructura.
Funciona, pero obtengo esta advertencia:
advertencia: paso del argumento 1 de ‘sprintf’ desde un tipo de puntero incompatible [-Wincompatible-pointer-types]
#include <stdio.h>
typedef struct match {
char* weekday[4];
} match;
int main() {
char* line = "Mon\0";
match* match;
sprintf(match->weekday, "%s", line);
printf("%s", match->weekday);
return 0;
}
¿Por qué match->weekday
es un tipo de puntero incompatible?</stdio.h>
davy.ai
El
match->weekday
se declara como un arreglo de punteros achar
, lo que significa que su tipo eschar**
. Sin embargo, la funciónsprintf
espera que el primer argumento sea un puntero a un arreglo dechar
, que tiene un tipo dechar*
. Por lo tanto, existe una incompatibilidad de tipos entre el argumento pasado y el tipo de argumento esperado, lo que conduce al mensaje de advertencia. Para solucionar esto, puedes cambiarmatch->weekday
a un arreglo dechar
eliminando el puntero adicional, de la siguiente manera:char weekday[4];
.