problems with strtok
I have been having some problems with strtok.
I'm not very experienced in C/C++ so I'm not used to using strtok.
the code I have is this:
char *cmnd;
string cmd[100];
char inpt[81];
while(1)
{
cout << "statsh$: ";
cin.getline(inpt,' ');
cmnd = strtok(inpt," ");
int c = 0;
while(cmnd != NULL)
{
cmd[c] = cmnd;
cout << cmd[c] << endl;
c++;
cmnd = strtok(NULL, " ");
}
cout << c << endl;
if(cmd[0] == "exit")
{
break;
}
for(int i=0; i < c; i++)
{
cout<< cmd[i] << endl;
}
}
The thing is here, that if I type out 8 or more words spaces between each, this program goes haywire and runs over and over the prompt statsh$ until it crashes.
If i enter a a a a a a a a a, as a single char with spaces it will take that just fine however. I have no idea what is going on with this strtok crapola. If someone could help me I would much appreciate it.
kharri5
Junior Poster in Training
56 posts since Jan 2005
Reputation Points: 13
Solved Threads: 0
Perhaps it's more to do with entering more than 80 characters rather than the number of words.
How does getline for example know how many characters to input, and not overflow the buffer?
According to my info, the 2nd parameter is a length, not a char to stop at.
Salem
Posting Sage
11,531 posts since Dec 2005
Reputation Points: 5,862
Solved Threads: 953
Perhaps it's more to do with entering more than 80 characters rather than the number of words.
How does getline for example know how many characters to input, and not overflow the buffer?
According to my info, the 2nd parameter is a length, not a char to stop at.
And you were right. I figured it out last night after looking at getline again, because i tried another example that was working and was wondering what the crap was going on. So it was getline. Thanks for the tip anyway.
kharri5
Junior Poster in Training
56 posts since Jan 2005
Reputation Points: 13
Solved Threads: 0