Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > C Programming > strstr and const problem

Reply
Thread Tools

strstr and const problem

 
 
smnoff
Guest
Posts: n/a
 
      06-06-2006
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/dream...e2.htm#wp80297

http://livedocs.macromedia.com/dream...tml/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.










 
Reply With Quote
 
 
 
 
Richard Heathfield
Guest
Posts: n/a
 
      06-06-2006
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)
 
Reply With Quote
 
 
 
 
Robert Harris
Guest
Posts: n/a
 
      06-06-2006
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/dream...e2.htm#wp80297
>
> http://livedocs.macromedia.com/dream...tml/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.
>
>
>
>
>
>
>
>
>
>

 
Reply With Quote
 
smnoff
Guest
Posts: n/a
 
      06-06-2006
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" <> wrote in message
news:...
> 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)



 
Reply With Quote
 
av
Guest
Posts: n/a
 
      06-07-2006
On Tue, 6 Jun 2006 10:54:56 -0500, "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/dream...e2.htm#wp80297
>
>http://livedocs.macromedia.com/dream...tml/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
 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
const vector<const MyType> Vs const vector<MyType> magnus.moraberg@gmail.com C++ 2 02-09-2009 10:45 PM
is const necessary in eg int compar(const void *, const void *) lovecreatesbeauty@gmail.c0m C Programming 26 11-10-2008 09:47 PM
const correctness - should C++ prefer const member over non-const? fungus C++ 13 10-31-2008 05:33 AM
const vector<A> vs vector<const A> vs const vector<const A> Javier C++ 2 09-04-2007 08:46 PM
Casting int'** to 'const int * const * const' dosn't work, why? Jonas.Holmsten@gmail.com C Programming 11 07-01-2007 06:16 PM



Advertisments
 



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57