Ir para conteúdo
Fórum Script Brasil
  • 0

Duvida strtok():?


ttable

Pergunta

Bom, estava testando a função strtok(); e vi que ao usa-la, ela modifica a variavel.

Preciso de um jeito que mantenha a string da variavel intacta.

Pensei em fazer uma segunda variavel e passar pra ela a string da outra variavel, para que possa aplicar o strtok na variavel nova e manter a original intacta.

#include <cstdlib>
#include <iostream>
#include <string.h>
#include <conio.h>

using namespace std;

int main()
{
    
    char szMessage[100];
    cout << "Digite algo:" << endl;
    cin >> szMessage;
    
    char *szMessage2;
    strcpy(szMessage2, szMessage);
    char *szCommand = strtok(szMessage2, " ");
   
   
    cout << szMessage << endl;    
    cout << szMessage2 << endl;
    
    
    getch;
    return 0;
}

Este programa compila normalmente, porém da um erro durante o funcionamento.

Poderiam me ajudar?

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Eu não entendi muinto bem sua pergunta mais vo tentar ajudar.

a função cin e bem completa porem ela considera os espaços em branco são considerados fim de entrada.

pra isso se usa a cin.getline.

já a função strtok faz a "quebra" da string de um deliminador comum

q no nosso caso foi um espaço em branco então por exemplo se eu digitar "oi tudo bom"

ele separaria asim "oitudobom"

ae em baixo vai um exemplo na pratica como funiona.

#include <iostream>
#include <string.h>

using namespace std;

int main()
{
    
    char szMessage[10]="Oi mano";
    char szMessage2[10];
    strcpy(szMessage2,szMessage);
    char *szCommand = strtok(szMessage2, " ");
      
    while(szCommand!=NULL){    
    cout << szCommand << endl;
    szCommand= strtok(NULL," ");
}

    
    system("pause");
    return 0;
}

mais se o problema foi porque seu codigo deu erro na execução

tente usar o ponteiro "*szMessage2" como uma variavel como a "szMessage".

espero ter ajudado

vlw :D

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,9k
×
×
  • Criar Novo...