|
jon_80 wrote: strToken is retaining an invalid value.
At what point?
"Money talks. When my money starts to talk, I get a bill to shut it up." - Frank
"Judge not by the eye but by the heart." - Native American Proverb
|
|
|
|
|
Since it is declared (see the code), that's why I said retained. The problem is that since it has an invalid value the program is not going through the while loop.
Jon
|
|
|
|
|
strstr() will return NULL if strSearch is not found in buffer . That would be why the while loop is not entered. You should be able to set a breakpoint on the strstr() statement to confirm this.
"Money talks. When my money starts to talk, I get a bill to shut it up." - Frank
"Judge not by the eye but by the heart." - Native American Proverb
|
|
|
|
|
I meant to copy Sentences.strSentences to the buffer, look for the occurrence of strSearch within buffer and the pointer returned by strstr written to strToken.
memcpy(buffer, Sentences.strSentence[iCurrent], MAX_SENTENCE_LENGTH);
strToken = strstr(buffer,strSearch);
while (strToken !=0 && *strToken != 0)
{
if (strlen(strToken) > 0)
{ iWordCount++;
// The program looks for strSearch from the position where it was found onwards.
strToken += strlen(strSearch);
}
if (strToken >= buffer + MAX_SENTENCE_LENGTH)
{break;}
strToken = strstr(strToken, strSearch);
}
I hope it is clear now. What I don't get is what is wrong with strToken?
Jon
|
|
|
|
|
jon_80 wrote: strToken = strstr(buffer,strSearch);
What is the value of buffer and strSearch at this point?
"Money talks. When my money starts to talk, I get a bill to shut it up." - Frank
"Judge not by the eye but by the heart." - Native American Proverb
|
|
|
|
|
Break up the scope of your function:
Function 1 will take a single sentence and count how many times a substring appears in it.
Function 2 will take a collection of sentences and call Function 1 on each of them and sum the results.
const unsigned long MAX_SENTENCE_LENGTH = 100;
unsigned long HowManyInSentence(const char* sentence, const char* substring)
{
char buffer[MAX_SENTENCE_LENGTH + 1] = {0};
memcpy(buffer, sentence, MAX_WORD_LENGTH);
char* token = 0;
unsigned long wordCount = 0;
token = strstr(buffer, substring);
while (token != 0 && *token != 0)
{
if (strlen(token) > 0)
{
++wordCount;
token += strlen(substring);
if (token >= buffer + MAX_WORD_LENGTH)
{
break;
}
}
token = strstr(token, substring);
}
return wordCount;
}
unsigned long HowMany(const char* substring)
{
unsigned long count = 0;
for (int i = 0; i < MAX_SENTENCES; ++i)
{
count += HowManInSentence(g_sentences[i], substring);
}
return count;
}
Make sure that your buffer is null-terminated otherwise token will end up off in the weeds.
Oh, and token doesn't need to be assigned with scope (that is, you don't need char* token = {0}; ). char* token = 0; is fine and more readable.
-- modified at 12:58 Friday 4th August, 2006
If you decide to become a software engineer, you are signing up to have a 1/2" piece of silicon tell you exactly how stupid you really are for 8 hours a day, 5 days a week
Zac
|
|
|
|
|
Thanks, but what do you mean by null-terminated? Also why this line of code?
if (token >= buffer + MAX_WORD_LENGTH) { break; }
Jon
|
|
|
|
|
jon_80 wrote: ...what do you mean by null-terminated?
Strings (not to be confused with an array of characters) in C must be nul-terminated in order to use string-related functions (e.g., strcpy() , strlen() , strstr() , strchr() ).
"Money talks. When my money starts to talk, I get a bill to shut it up." - Frank
"Judge not by the eye but by the heart." - Native American Proverb
|
|
|
|
|
jon_80 wrote: but what do you mean by null-terminated?
Lets say I write the following:
char* myString = "Hello, World!";
There are 13 characters in that string, but in memory, the size allocated for it would be 14. The reason is that the last character will be a 0, so the string actually looks like this in memory: Hello, World!\0 . C-style strings require this, as do many C++ string wrappers.
if (token >= buffer + MAX_WORD_LENGTH) {
break;
}
The above section of code checks to make sure that the token (which is nothing more than a character pointer) is not pointing to something that is outside the buffer. buffer is an array of characters (with a size of MAX_WORD_LENGTH -- which actually should have been renamed to MAX_SENTENCE_LENGTH). Basically, if token has moved passed the end of the string, we stop.
If you decide to become a software engineer, you are signing up to have a 1/2" piece of silicon tell you exactly how stupid you really are for 8 hours a day, 5 days a week
Zac
|
|
|
|
|
>>memcpy(buffer, Sentences.strSentence[iCurrent], MAX_SENTENCE_LENGTH);
how is Sentences.strSentence declared? is it a char**? has memory been allocated or is your program just scribbling all over memory with that statement?
|
|
|
|
|
it's a char...
struct Sentence
{
char strSentence [MAX_LINES] [MAX_SENTENCE_LENGTH];
};
Jon
|
|
|
|
|
When I select menu item Help-->Search, enter a search string, the IDE displays a URL in the middle of the screen and the only way I can get rid of it is to shut down and restart the entire IDE. This is really starting to pi$$ me off!
Any way to change that "feature"?
|
|
|
|
|
Anyway I could not search from the net using MSDN installed with Visual Studio. it's saying that proxy authentication failed. even Im simply browsing using Internet explorer. what a heck is this
SaRath.
"Where I am from, there is no plan B. So, take advantage of today becuase tomorrow is not promised. - 50 Cent"
My Blog | Understanding State Pattern
|
|
|
|
|
its probably the way you have your browser set up.
|
|
|
|
|
there's no way in document explorer to explicitly set proxy. it's taking from internet explorer.
it's not asking for authentication.
however when im load a website in a new window inside the document explorer, it behaves as IE and works fine. but that credentials i have passed not taking in the search window
|
|
|
|
|
Tools->Options
Expand the "Help" node
Select "Online"
in the group box at the top, choose the third radio button: "try local only, not online"
inthe "search these providers" listbox, uncheck all but "Local Help"
|
|
|
|
|
I wrote a service using sockets. I open and close a socket connection to a pop3 server at an interval of a minute or two. After a couple of hours I receive the following error
An operation on a socket could not be performed because the system lacked sufficient buffer space or because a queue was full.
Do you know where the problem is?
Thanks!
modified 9-Mar-17 17:10pm.
|
|
|
|
|
I am assuming you have no control over the backend server. I'd suggest taking a very close look at how you are closing the socket connection. It *sounds* like you are leaving something hanging and the backend server is simply running out of resources.
What is the exact socket error? Not the text, the #.
Charlie Gilley
Will program for food...
Whoever said children were cheaper by the dozen... lied.
My son's PDA is an M249 SAW.
My other son commutes in an M1A2 Abrams
|
|
|
|
|
I remember a problem that I solved which is similar to this. You most probably are not closing the socket. Checkout if you are leaving out opened sockets.
|
|
|
|
|
does any one know good interpolation C/C++ code for a cubic one interpolating from a given sampling rate to a desired one or from a number of points to desired number of points
9ine
|
|
|
|
|
|
1D
function like interpolate(float *src, float *dst, ...)
9ine
|
|
|
|
|
hi!!
I am getting this linking error while porting code from VC6 to VC8!
fatal error LNK1181: cannot open input file 'mfcs42.lib'
I googled and find out that, VC8 no longer uses mfc 4.2 and is currently using mfc 8. Also I found that there is no way i can compile this project using VC8.
Is there any way I can use my old project without recoding all again in VC8. Or else can the references in my code which are usiing this old library?? Is there any better sol'n to this problem?
Thx
|
|
|
|
|
Did you see msdn
From the MSDN
"The linker could not find filename because it does not exist or the path was not found."
|
|
|
|
|
yes i gone thru MSDN.
That is what i said mfcs42d is no longer available.
I need some solution.other tha recoding whole project
thx
|
|
|
|