while(!pile.eof()){
pile.getline(inputbuff,199,'\n');
count++;
if(count % 2 != 0){
tok = strtok(inputbuff,",");
tok = strtok (NULL,",");
tok = strtok (NULL,",");
}
if(count % 2 == 0){
CopyFile(inputbuff,ptr);
}
}
the loop iterates the first time through qualifying for (count % 2 != 0)
because count is at 1
so it stores the characters after the comma into tok and does it successfully according to my debugger.
then the while itterates again because it doesn't qualify for the next if.
this time it does qualify for count % 2 == 0
but my tok pointer is now null , how can that be? does it go null when the while loop itterates for the second time? that shouldn't be because my integer count doesn't reset? Please help
int count = 0;
while(!pile.eof())
{
pile.getline(inputbuff,199,'\n');
count++;
if(count % 2 != 0)
{
tok = strtok(inputbuff,",");
tok = strtok(NULL,",");
tok = strtok (NULL,",");
}
if (count % 2 == 0)
CopyFile(inputbuff,ptr);
}
Second, no one knows what's hidden behind that "inputbuff" character array. We don't know what the data is, therefore we can't answer your question. The tok is NULL because that is what it was assigned. Variables just don't change by magic.
Unless you provide to us the actual data, or provide a full, but small program demonstrating the issue, then there is nothing wrong with what you're seeing.
strtok returns a pointer to the next token found in the specified c-string. It returns NULL when no more tokens are found. Each call modifies the provided c-string by substituting a NULL character in the string for each delimiter that is encountered. As cilu said
I guess it's null because the second call to strtok (NULL, ",") just returns NULL
I suspect that the data read into inputbuffer is not always what you are expecting. You have no checking on the format of this and are assuming it is always right.
What are you trying to accomplish?
As Paul requested, please provide some actual data and a small complete program that demonstrates the problem.
Bookmarks