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

Codigo duvida C

Discussão em 'Programação' iniciada por bimector, 22 de Novembro de 2008. (Respostas: 8; Visualizações: 826)

  1. Tento uma estrutura FICHEIRO

    Código:
    void (FICHEIRO **pt, int a, char *argv[])
    FICHEIRO *aux;
    int i;
    char nome[9];
    aux = *pt;
    
    i= 0;
    while(i<a){
    
    strcpy(nome,argv[i]);
    if (strcmp(nome,"-f")==0){ /*O erro de Segmentation fault e por causa disto*/
    i++;
    strcpy(aux->in,argv[i]);}/* ou isto*/
    
    
    Só da o Segementation fault quando na linha de comandos escrevo -f.
     
    Última edição: 22 de Novembro de 2008
  2. Baderous

    Baderous Banido

    Na atribuição do valor pt a aux, esqueceste-te da letra 't':

    Código:
    aux = *pt;
     
  3. Sim esquece me, mas no post. O ficheiro esta lá o pt. Ja fiz nova edição.

    Estou a lembrar que esta estrutura ja tens valores eu apenas quero alterar o parametros, ou seja a estrutura ja existe e tem ja um apontador para a mesma.
     
    Última edição: 22 de Novembro de 2008
  4. onaips

    onaips Power Member

    se aux é um apontador tens que lhe passar um endereço e nao um valor... por isso acho que o teu
    aux= *pt estraga isso..

    ou entao o teu "a" é maior que o tamanho dos arrays...
     
  5. Tive a utilizar um debugger e onde me dá o problema e quando entra no if.
     
  6. raVemjr

    raVemjr I'm cool cuz I Fold

    Mete um printf("nome: %s\n", nome); depois do strcpy, e diz o que imprime antes da segfault...
     
  7. PinhoPT

    PinhoPT Power Member

    Boas

    Fazes o strcpy tens espaço no destino? Como aux é somente um ponteiro e tal...

    Cumps
     
  8. Pois eu nao reservo espaço neste função porque o espaço pedido está numa outra função que enche o espaço com valores standard. E esta é apenas para subtistuir os valores que aparecem a linha de comandos.
     
  9. Resolvido era um sscanf() que não esta bem declarado.
    Obrigado!
     

Partilhar esta Página