I am trying to use the strstr function but it doesn't seem to work with a
dynamically allocated string that I pass into a function.
Specifically, I am using a Macromedia C-level extensibility and the
JavaScript interpreter to write an extension.
http://livedocs.macromedia.com/dreamweaver/8/extending/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Parts&file=22_c_le2.htm#wp80297
http://livedocs.macromedia.com/dreamweaver/8/extending/wwhelp/wwhimpl/js/html/wwhelp.htm
While the example in the link above doesn't input 2 strings for me to do a
strstr function, my custom function does.
So something like this seem to work:
char const *stringBIG, *strSUB;
char *stringBIGIndex;
stringBIGIndex= strstr("this is a test", "test"); // this is a const and
it works
HOWEVER, this doesn't seem to work:
char const *stringBIG, *strSUB;
char *stringBIGIndex;
unsigned int strSUBlen, stringBIGlen;
// Convert the stringBIG to a string
stringBIG = JS_ValueToString(cx, argv[0], &stringBIGlen);
strSUB= JS_ValueToString(cx, argv[1], &strSUBlen);
stringBIGIndex= strstr(*stringBIG , *strSUB);
So, if you have a spelled out hard coded constant string, like "this is a
test", it works. But if I want to pass a string dynamically in, convert it
and use the strstr function it doesn't.
I also tried declaring the line
char const *stringBIG, *strSUB;
previously without the const keyword
char *stringBIG, *strSUB;
And that didn't seem to work originally, so I added the const in there.
Still no success.
I am trying to use the <string.h> library but I can't seem to use it in
practical manner.
Thanks.
|
|
0
|
|
|
|
Reply
|
rhinohat (7)
|
6/6/2006 3:54:56 PM |
|
smnoff said:
<snip>
> char const *stringBIG, *strSUB;
<snip>
> stringBIGIndex= strstr(*stringBIG , *strSUB);
strstr takes const char *, not const char. If stringBIG and strSUB are
pointing to valid strings, then you just need to do this:
stringBIGIndex= strstr(stringBIG , strSUB);
--
Richard Heathfield
"Usenet is a strange place" - dmr 29/7/1999
http://www.cpax.org.uk
email: rjh at above domain (but drop the www, obviously)
|
|
0
|
|
|
|
Reply
|
invalid171 (6555)
|
6/6/2006 4:11:40 PM
|
|
smnoff wrote:
> I am trying to use the strstr function but it doesn't seem to work with a
> dynamically allocated string that I pass into a function.
>
> Specifically, I am using a Macromedia C-level extensibility and the
> JavaScript interpreter to write an extension.
>
> http://livedocs.macromedia.com/dreamweaver/8/extending/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Parts&file=22_c_le2.htm#wp80297
>
> http://livedocs.macromedia.com/dreamweaver/8/extending/wwhelp/wwhimpl/js/html/wwhelp.htm
>
>
> While the example in the link above doesn't input 2 strings for me to do a
> strstr function, my custom function does.
>
> So something like this seem to work:
>
> char const *stringBIG, *strSUB;
> char *stringBIGIndex;
> stringBIGIndex= strstr("this is a test", "test"); // this is a const and
> it works
>
> HOWEVER, this doesn't seem to work:
>
> char const *stringBIG, *strSUB;
> char *stringBIGIndex;
> unsigned int strSUBlen, stringBIGlen;
>
> // Convert the stringBIG to a string
> stringBIG = JS_ValueToString(cx, argv[0], &stringBIGlen);
>
> strSUB= JS_ValueToString(cx, argv[1], &strSUBlen);
>
> stringBIGIndex= strstr(*stringBIG , *strSUB);
Should be:
stringBIGIndex = strstr(stringBIG, strSUB);
Robert
>
>
> So, if you have a spelled out hard coded constant string, like "this is a
> test", it works. But if I want to pass a string dynamically in, convert it
> and use the strstr function it doesn't.
>
> I also tried declaring the line
> char const *stringBIG, *strSUB;
>
> previously without the const keyword
> char *stringBIG, *strSUB;
>
> And that didn't seem to work originally, so I added the const in there.
> Still no success.
>
> I am trying to use the <string.h> library but I can't seem to use it in
> practical manner.
>
>
> Thanks.
>
>
>
>
>
>
>
>
>
>
|
|
0
|
|
|
|
Reply
|
robert.f.harris (386)
|
6/6/2006 4:14:44 PM
|
|
It worked when I didn't include the * in strstr as you recommended. Thanks.
Now, I am trying to understand why it worked. I guess when I used the line:
stringBIGIndex= strstr(*stringBIG , *strSUB);
I was already dereferencing to the value? As opposed to just sticking in a
auto allocated variable name?
I guess when I declared this line
char const *stringBIG, *strSUB;
I don't have to separately declare:
char const stringBIG, strSUB; // no * pointer here and because of the
first one above, why?
I know it does it, but don't know how and why it does it.
Can someone please explain?
"Richard Heathfield" <invalid@invalid.invalid> wrote in message
news:OPOdnVXNXpuTNBjZRVny2w@bt.com...
> smnoff said:
>
> <snip>
>
>> char const *stringBIG, *strSUB;
>
> <snip>
>
>> stringBIGIndex= strstr(*stringBIG , *strSUB);
>
> strstr takes const char *, not const char. If stringBIG and strSUB are
> pointing to valid strings, then you just need to do this:
>
> stringBIGIndex= strstr(stringBIG , strSUB);
>
> --
> Richard Heathfield
> "Usenet is a strange place" - dmr 29/7/1999
> http://www.cpax.org.uk
> email: rjh at above domain (but drop the www, obviously)
|
|
0
|
|
|
|
Reply
|
rhinohat (7)
|
6/6/2006 6:46:52 PM
|
|
On Tue, 6 Jun 2006 10:54:56 -0500, "smnoff" <rhinohat@hotmail.com>
wrote:
>I am trying to use the strstr function but it doesn't seem to work with a
>dynamically allocated string that I pass into a function.
>
>Specifically, I am using a Macromedia C-level extensibility and the
>JavaScript interpreter to write an extension.
>
>http://livedocs.macromedia.com/dreamweaver/8/extending/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Parts&file=22_c_le2.htm#wp80297
>
>http://livedocs.macromedia.com/dreamweaver/8/extending/wwhelp/wwhimpl/js/html/wwhelp.htm
>
>
>While the example in the link above doesn't input 2 strings for me to do a
>strstr function, my custom function does.
>
>So something like this seem to work:
>
> char const *stringBIG, *strSUB;
> char *stringBIGIndex;
> stringBIGIndex= strstr("this is a test", "test"); // this is a const and
>it works
it seems to me str* name are reserved for the compiler
so the above is wrong
|
|
0
|
|
|
|
Reply
|
av
|
6/7/2006 5:22:36 AM
|
|
|
4 Replies
43 Views
(page loaded in 0.15 seconds)
|