[Ajuda] strtok() em C

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:
No 1º caso estás a declarar um apontador para char. No 2º estás a declarar uma string.

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
 
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.
 
Back
Topo