Jump to content
Fórum Script Brasil
  • 0

Duvida strtok():?


ttable

Question

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 to comment
Share on other sites

1 answer to this question

Recommended Posts

  • 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 to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...