1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

listas

Discussão em 'Programação' iniciada por anthead, 23 de Abril de 2009. (Respostas: 7; Visualizações: 709)

  1. anthead

    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,
     
  2. Baderous

    Baderous Banido

    Em que linguagem?
     
  3. anthead

    anthead Power Member

    Peco desculpa... em C.

    cumprimentos,
     
  4. Baderous

    Baderous Banido

    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.
     
  5. anthead

    anthead Power Member

    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: 24 de Abril de 2009
  6. 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)
     
  7. anthead

    anthead Power Member

    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,
     
  8. anthead

    anthead Power Member

    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,
     

Partilhar esta Página