es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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>

Tags:  ,

Answer

  1. Avatar for davy.ai

    El match->weekday se declara como un arreglo de punteros a char, lo que significa que su tipo es char**. Sin embargo, la función sprintf espera que el primer argumento sea un puntero a un arreglo de char, que tiene un tipo de char*. 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 cambiar match->weekday a un arreglo de char eliminando el puntero adicional, de la siguiente manera: char weekday[4];.

Comments are closed.