La matriz solo agrega valores duplicados

Cuando imprimo el contenido de mi matriz, parece anular todos los elementos con el último comando ingresado:

typedef struct { int argc; char* argv[10; char* myArray[80]; size_t size; } Command; 

Interior principal:

 Command cmd; cmd.myArray[cmd.size++] = buffer; 

(El búfer es una entrada de usuario que he comprobado con un printf para asegurarme de que estaba almacenado)

La función:

 void myFunction(const Command* cmd) { for (size_t i = 0; i size)-1; ++i) { printf("%s\n", cmd->myArray[i]); } } 

Cualquier ayuda sería muy apreciada.

Estás configurando todos los elementos de myArray para la misma cosa, buffer . Necesitas hacer copias para obtener valores distintos:

 char *temp = malloc(strlen(buffer)+1); strcpy(temp, buffer); cmd.myArray[cmd.size++] = temp; 

Esta asignación transfiere la propiedad del búfer:

 cmd.myArray[cmd.size++] = buffer; 

En otras palabras, a partir de esa asignación no debe modificar el búfer, ya que al hacerlo, alteraría un comando previamente almacenado. Para que esto funcione correctamente, necesita copiar el búfer o asignar uno nuevo en cada iteración. Si desea usar una copia, agregue una llamada a strdup :

 cmd.myArray[cmd.size++] = strdup(buffer); 

Si prefiere asignar un nuevo búfer, agregue

 cmd.myArray[cmd.size++] = buffer; buffer = malloc(BUF_SIZE); // buffer needs to be a `char *` 

Si buffer también es un char *, es posible que necesites algo como esto en su lugar:

 cmd.myArray[cmd.size++] = buffer[cmd.size];