Basic, my problem is here:
(*(char *) &aluno.nome) = *lista_alunos[i-1];
the code above return just the first element.
and the code...
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct alunos {
int id;
char nome[50];
int idade;
};
int main()
{
struct alunos aluno;
char var_struct[50] = {0};
char *lista_alunos[] = {
{"Mauricio"},
{"Jose"}
};
memcpy(&aluno, var_struct, 50);
for(int i=1;i<3;i++){
(*(int *) &aluno.id) = i;
(*(char *) &aluno.nome) = *lista_alunos[i-1];
printf("Entrou no for\n");
printf("%u\n", aluno.id);
printf("%s\n", aluno.nome);
// ((int) *&alunos)[i] = (struct alunos) {i, &lista_alunos[i-1] , 33};
};
return 0;
}
i resolved with this:
sprintf(aluno.nome, lista_alunos[i-1]);
this is the new code:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct alunos {
int id;
char nome[50];
int idade;
};
int main()
{
struct alunos aluno;
char *lista_alunos[] = {
{"Mauricio"},
{"Jose"}
};
for(int i=1;i<3;i++){
aluno.id = i;
sprintf(aluno.nome, lista_alunos[i-1]);
};
return 0;
}