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

[Ajuda] strtok() em C

Discussão em 'Programação' iniciada por RokeSLB, 29 de Maio de 2008. (Respostas: 4; Visualizações: 899)

  1. RokeSLB

    RokeSLB Power Member

    Ao executar algo semelhante a isto:

    Código:
    char * str = "xxxx.yyyy";
    printf ("%s", strtok (str, "."));
    o programa aborta. Mas se em vez de:

    char * str fizer char str [] = "xxxx.yyyy";

    já executa normalmente. Alguém sabe o que se passa? É que dava-me jeito usar da 1ª forma

    Desde já obrigado
     
    Última edição: 29 de Maio de 2008
  2. Baderous

    Baderous Banido

    No 1º caso estás a declarar um apontador para char. No 2º estás a declarar uma string.
     
  3. RokeSLB

    RokeSLB Power Member

    Isso eu sei. A minha questão é: segundo a documentação de c o que é passado por parametro é um char pointer (tal como no 1º caso) logo nao deveria ter problema e nao sei o que se passa
     
  4. Baderous

    Baderous Banido

    O que é passado é um apontador para caracter e na verdade é isso que acontece pois o nome da string funciona como apontador para o 1º elemento desta, logo aponta para um caracter (contém o endereço do 1º elemento da string). Isto é o que é passado à função. No entanto, antes de passares à função a string, precisas de a declarar e isso é feito por: char string[dimensao] e não por char * string.

    Código:
    char * strtok([COLOR=Red]char * str[/COLOR], const char * delimiters)
    
    
    [COLOR=Orange]char str[] = "asdasda.sdasdad"[/COLOR]
    strtok(str,".")
    Aquilo que aparece no cabeçalho da função é um apontador para a string, pois é isso que passas à função como parâmetro, não lhe passas a string toda, apenas um apontador para a sua posição em memória. No entanto, para passares a string à função tens de a declarar.
     
  5. RokeSLB

    RokeSLB Power Member

Partilhar esta Página