listas

anthead

Power Member
boas,

a pergunta é... como se altera o conteudo de um parametro(por exemplo nome (este parametro é um array de caracteres)) de um elemento de uma lista?

agradeco desde de ja a ajuda,

cumprimetos,
 
Tens de aceder ao campo da estrutura, que pode ser passada por valor (caso em que utilizas o operador '.') ou por endereço (em que utilizas o operador '->').
Para alterar um array de caracteres, podes usar o memcpy para alterar a zona de memória da estrutura que corresponde ao array de caracteres. Para as strings, podes usar o strcpy.
 
obrigado Baderous... esta informacao vai me ser util!!

agora a minha duvida é... estando eu a trabalhar com apontadores... como chego atraves destes ao meu array de caracteres "nome" ja criado??

cheguei ate aqui:

void alterar_nome()
{
int cod, codigoc;
cl cliente_pr = n_clientes;
char novo_user[100];
char user[100];

system("clear");
printf("Introduza o codigo do cliente:");
scanf("%d",&cod);

if(cliente_pr->codigoc == cod)
{
printf("\nNovo Nome:");
fgets(novo_user, sizeof(novo_user), stdin);
novo_user[strlen(novo_user)-1] = '\0';

memcpy (user,novo_user,strlen(novo_user)+1);
printf("Nome alterado com sucesso!!");
}
}

P.S. - o array de caracteres user esta declarado numa outra funcao chamada inserir_cliente()...que me permite inserir o nome do cliente inicialmente...


cumprimentos,
 
Última edição:
Crias uma estrutura com os campos que pretendes (codigo, nome, morada, etc) e quando correres a funcao envias a estrutura como argumento, pex alterar_nome(CLIENTES cl)
 
ja esta a funcionar... o resultado final é este:

void alterar_nome()
{
int cod, codigoc;
cl cliente_pr = n_clientes;
char novo_user[100];

system("clear");
printf("Introduza o codigo do cliente:");
scanf("%d",&cod);

while(cliente_pr !=NULL)
{
if(cliente_pr->codigoc == cod)
{
getchar();
printf("\nNovo Nome:");
fgets(novo_user, sizeof(novo_user), stdin);
novo_user[strlen(novo_user)-1] = '\0';getchar();

memcpy(cliente_pr->user,novo_user,strlen(novo_user)+1);
printf("Nome alterado com sucesso!!");getchar();break;
}
else
{
cliente_pr = cliente_pr->next;
}
}
if(cliente_pr == NULL)
{
printf("Cliente não existe!!");
}
}

mais uma vez obrigado pela a ajuda...!

Cumprimentos,
 
ja esta a funcionar... o resultado final é este:

void alterar_nome()
{
int cod, codigoc;
cl cliente_pr = n_clientes;
char novo_user[100];

system("clear");
printf("Introduza o codigo do cliente:");
scanf("%d",&cod);

while(cliente_pr !=NULL)
{
if(cliente_pr->codigoc == cod)
{
getchar();
printf("\nNovo Nome:");
fgets(novo_user, sizeof(novo_user), stdin);
novo_user[strlen(novo_user)-1] = '\0';

memcpy(cliente_pr->user,novo_user,strlen(novo_user)+1);
printf("Nome alterado com sucesso!!");break;
}
else
{
cliente_pr = cliente_pr->next;
}
}
if(cliente_pr == NULL)
{
printf("Cliente não existe!!");
}
}

mais uma vez obrigado pela a ajuda...!

Cumprimentos,
 
Back
Topo