strtok [RESOLVIDO]

1. strtok [RESOLVIDO]

Luiz Carlos de Moura
lcmoura

(usa Ubuntu)

Enviado em 14/09/2009 - 09:22h

Pessoal, não consigo compilar o programinha mostrado a seguir:

#include <stdio.h>
#include <string.h>
int main(int argc, char *argv[])
{
char s1[40]="Exemplo de substring.";
char s3[40];
printf("\nString inicial: %s",s1);
s3=strtok(s1,argv[1]);
printf("\nCopia: %s\n",s3);
return 0;
}

Obtenho o erro incompatible types in assignment referente ao comando s3=strtok(s1,argv[1]);
Declarei s3 como string (array de caracteres) e acho que a função strtok retorna uma string, não?
Alguém pode me explicar o que está acontecendo?
Grato.



  


2. MELHOR RESPOSTA

Samuel Leonardo
SamL

(usa XUbuntu)

Enviado em 14/09/2009 - 11:43h

Essa função strtok() retorna um ponteiro para o primeiro argumento, ou nulo. O ponteiro aponta para o primeiro argumento, ou melhor, o primeiro argumento que você passou para a função será modificado, então você nem precisaria fazer "s3=strtok(s1,argv[1]);" porque s1 já foi modificada, veja:
-Se argv[1] = "sub";
--usando strtok(s1, argv[1]);
--s1 agora é "Exemplo de ";
Se você ainda quiser usar s3, faça:
strcpy(s3, strtok(s1, argv[1]));

valeu!

3. strtok

Luiz Carlos de Moura
lcmoura

(usa Ubuntu)

Enviado em 14/09/2009 - 12:19h

É isso mesmo!
Tanto o strtok como o strstr a gente usa com o strcpy, não?
Não entendi muito bem, porque ainda preciso estudar os ponteiros, mas sua explicação foi fantástica.
Muito obrigado.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts