Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > C Programming > Missing removeStr and substr function

Reply
Thread Tools

Missing removeStr and substr function

 
 
tfelb
Guest
Posts: n/a
 
      11-26-2007
Hi all!

I bought the book "Programming in C" by Stephen G Kochan. I miss 2
answers at his website.
(removestr and the substr function) How can I implement these
functions? It would be wonderful if someone can help me out, because
Stephen Kochan is not reachable.

Thanks for any help

T. Felb

 
Reply With Quote
 
 
 
 
Lew Pitcher
Guest
Posts: n/a
 
      11-26-2007
On Nov 26, 1:05 pm, tfelb <(E-Mail Removed)> wrote:
> Hi all!
>
> I bought the book "Programming in C" by Stephen G Kochan. I miss 2
> answers at his website.
> (removestr and the substr function) How can I implement these
> functions? It would be wonderful if someone can help me out, because
> Stephen Kochan is not reachable.



While I'm not familiar with Mr. Kochan's book or his functions, I can
guess how they might be implemented. In fact, unless Mr. Kochan has
dictated some sort of convoluted processing requirement, both
functions should be simple to the point of being obvious to anyone
with even a small amount of experience with C, character arrays, and
the definition of a string.

Why don't you post the requirements for both of these functions, and
the code you've written so far, and we'll see if we can assist you in
getting it right.



 
Reply With Quote
 
 
 
 
tfelb
Guest
Posts: n/a
 
      11-26-2007
On 26 Nov., 19:13, Lew Pitcher <(E-Mail Removed)> wrote:
> On Nov 26, 1:05 pm, tfelb <(E-Mail Removed)> wrote:
>
> > Hi all!

>
> > I bought the book "Programming in C" by Stephen G Kochan. I miss 2
> > answers at his website.
> > (removestr and the substr function) How can I implement these
> > functions? It would be wonderful if someone can help me out, because
> > Stephen Kochan is not reachable.

>
> While I'm not familiar with Mr. Kochan's book or his functions, I can
> guess how they might be implemented. In fact, unless Mr. Kochan has
> dictated some sort of convoluted processing requirement, both
> functions should be simple to the point of being obvious to anyone
> with even a small amount of experience with C, character arrays, and
> the definition of a string.
>
> Why don't you post the requirements for both of these functions, and
> the code you've written so far, and we'll see if we can assist you in
> getting it right.


These are the functions of Stephen G Kochan posted on his website, but
to answer my book questions I miss the substr and removestr function
to understand how these functions are implemented.

int findString (const char source[], const char s[])
{
int i, j, foundit = false;

// try each character in source

for ( i = 0; source[i] != '\0' && !foundit; ++i ) {
foundit = true;

// now see if corresponding chars from s match

for ( j = 0; s[j] != '\0' && foundit; ++j )
if ( source[j + i] != s[j] || source[j + i] == '\0' )
foundit = false;

if (foundit)
return i;
}

return -1;
}



10-7
/* insert string s into string source starting at i
This function uses the stringLength function defined
in the chapter.

Note: this function assumes source is big enough
to store the inserted string (dangerous!) */

void insertString (char source[], char s[], int i)
{
int j, lenS, lenSource;

/* first, find out how big the two strings are */

lenSource = stringLength (source);
lenS = stringLength (s);

/* sanity check here -- note that i == lenSource
effectively concatenates s onto the end of source */

if (i > lenSource)
return;

/* now we have to move the characters in source
down from the insertion point to make room for s.
Note that we copy the string starting from the end
to avoid overwriting characters in source.
We also copy the terminating null (j starts at lenS)
as well since the final result must be null-terminated */

for ( j = lenSource; j >= i; --j )
source [lenS + j] = source [j];

/* we've made room, now copy s into source at the
insertion point */

for ( j = 0; j < lenS; ++j )
source [j + i] = s[j];
}



10-9
bool replaceString (char source [], char s1[], char s2[])
{
int index;

// first locate s1 inside the source

index = findString (source, s1);

if ( index == -1 )
return false;

// now delete s1 from the source

removeString (source, index, stringLength (s1));

// now insert the new string

insertString (source, s2, index);

return true;
}

 
Reply With Quote
 
Martin Ambuhl
Guest
Posts: n/a
 
      11-26-2007
tfelb wrote:
> Hi all!
>
> I bought the book "Programming in C" by Stephen G Kochan. I miss 2
> answers at his website.
> (removestr and the substr function) How can I implement these
> functions? It would be wonderful if someone can help me out, because
> Stephen Kochan is not reachable.


A simple Google search yields
<http://csourcesearch.net/package/fk/0.6.7/fk-0.6.7/lib/removestr.c>
<http://www.koders.com/c/fid88DBABDF4CD01D6FBE11E7B5CB60CC2BEA98E60B.aspx>

I have made no effort to check the quality of the code.
In any case, comp.lang.c is not a sources-wanted newsgroup, and there
_are_ such newsgroups. Try one.
 
Reply With Quote
 
Martin Ambuhl
Guest
Posts: n/a
 
      11-26-2007
tfelb wrote:
> Hi all!
>
> I bought the book "Programming in C" by Stephen G Kochan. I miss 2
> answers at his website.
> (removestr and the substr function) How can I implement these
> functions? It would be wonderful if someone can help me out, because
> Stephen Kochan is not reachable.


Did you try <(E-Mail Removed)> as
<http://www.kochan-wood.com/AboutUs.htm> suggests?
 
Reply With Quote
 
Lew Pitcher
Guest
Posts: n/a
 
      11-26-2007
On Nov 26, 1:20 pm, tfelb <(E-Mail Removed)> wrote:
> On 26 Nov., 19:13, Lew Pitcher <(E-Mail Removed)> wrote:
>
>
>
> > On Nov 26, 1:05 pm, tfelb <(E-Mail Removed)> wrote:

>
> > > Hi all!

>
> > > I bought the book "Programming in C" by Stephen G Kochan. I miss 2
> > > answers at his website.
> > > (removestr and the substr function) How can I implement these
> > > functions? It would be wonderful if someone can help me out, because
> > > Stephen Kochan is not reachable.

>
> > While I'm not familiar with Mr. Kochan's book or his functions, I can
> > guess how they might be implemented. In fact, unless Mr. Kochan has
> > dictated some sort of convoluted processing requirement, both
> > functions should be simple to the point of being obvious to anyone
> > with even a small amount of experience with C, character arrays, and
> > the definition of a string.

>
> > Why don't you post the requirements for both of these functions, and
> > the code you've written so far, and we'll see if we can assist you in
> > getting it right.

>
> These are the functions of Stephen G Kochan posted on his website, but
> to answer my book questions I miss the substr and removestr function
> to understand how these functions are implemented.
>
> int findString (const char source[], const char s[])
> {
> int i, j, foundit = false;
>
> // try each character in source
>
> for ( i = 0; source[i] != '\0' && !foundit; ++i ) {
> foundit = true;
>
> // now see if corresponding chars from s match
>
> for ( j = 0; s[j] != '\0' && foundit; ++j )
> if ( source[j + i] != s[j] || source[j + i] == '\0' )
> foundit = false;
>
> if (foundit)
> return i;
> }
>
> return -1;
>
> }

[snip]

Well, it appears that findString() is a workable substitute for the
missing substr() function. So, one down and one to go.

As I said, it is trivially easy to write these two functions. Now that
you have substr() (or it's equivalent), think of how you would delete
a substring from a string. Here's how I would do it: I'd start moving
characters from beyond the right end of the substring to the left
positions of the substring, until I run out of string.

take from here
! A ! B ! C ! D ! E ! F ! G ! \0 !
^ :
'-----------'
and move to here, until you move the \0

You are left with...

! A ! E ! F ! G ! \0 ! ! ! !

thus deleting the substring "BCD" from the string "ABCDEFG"

Now, go code that program
 
Reply With Quote
 
CBFalconer
Guest
Posts: n/a
 
      11-26-2007
tfelb wrote:
> Lew Pitcher <(E-Mail Removed)> wrote:
>> tfelb <(E-Mail Removed)> wrote:
>>
>>> I bought the book "Programming in C" by Stephen G Kochan. I miss
>>> 2 answers at his website. (removestr and the substr function)
>>> How can I implement these functions? It would be wonderful if
>>> someone can help me out, because Stephen Kochan is not reachable.

>>

.... snip ...
>>
>> Why don't you post the requirements for both of these functions,
>> and the code you've written so far, and we'll see if we can
>> assist you in getting it right.

>
> These are the functions of Stephen G Kochan posted on his website,
> but to answer my book questions I miss the substr and removestr
> function to understand how these functions are implemented.
>
> int findString (const char source[], const char s[])

.... snip much code ...

You posted all that but didn't bother to answer Lews question.
Describe, in detail, what those functions (substr and removestr)
do. Include a complete prototype.


--
Chuck F (cbfalconer at maineline dot net)
<http://cbfalconer.home.att.net>
Try the download section.



--
Posted via a free Usenet account from http://www.teranews.com

 
Reply With Quote
 
tfelb
Guest
Posts: n/a
 
      11-27-2007
On 26 Nov., 22:53, CBFalconer <(E-Mail Removed)> wrote:
> tfelb wrote:
> > Lew Pitcher <(E-Mail Removed)> wrote:
> >> tfelb <(E-Mail Removed)> wrote:

>
> >>> I bought the book "Programming in C" by Stephen G Kochan. I miss
> >>> 2 answers at his website. (removestr and the substr function)
> >>> How can I implement these functions? It would be wonderful if
> >>> someone can help me out, because Stephen Kochan is not reachable.

>
> ... snip ...
>
> >> Why don't you post the requirements for both of these functions,
> >> and the code you've written so far, and we'll see if we can
> >> assist you in getting it right.

>
> > These are the functions of Stephen G Kochan posted on his website,
> > but to answer my book questions I miss the substr and removestr
> > function to understand how these functions are implemented.

>
> > int findString (const char source[], const char s[])

>
> ... snip much code ...
>
> You posted all that but didn't bother to answer Lews question.
> Describe, in detail, what those functions (substr and removestr)
> do. Include a complete prototype.
>
> --
> Chuck F (cbfalconer at maineline dot net)
> <http://cbfalconer.home.att.net>
> Try the download section.
>
> --
> Posted via a free Usenet account fromhttp://www.teranews.com- Zitierten Text ausblenden -
>
> - Zitierten Text anzeigen -


Thanks for all!
 
Reply With Quote
 
tfelb
Guest
Posts: n/a
 
      12-02-2007
On 27 Nov., 16:08, tfelb <(E-Mail Removed)> wrote:
> On 26 Nov., 22:53, CBFalconer <(E-Mail Removed)> wrote:
>
>
>
>
>
> > tfelb wrote:
> > > Lew Pitcher <(E-Mail Removed)> wrote:
> > >> tfelb <(E-Mail Removed)> wrote:

>
> > >>> I bought the book "Programming in C" by Stephen G Kochan. I miss
> > >>> 2 answers at his website. (removestr and the substr function)
> > >>> How can I implement these functions? It would be wonderful if
> > >>> someone can help me out, because Stephen Kochan is not reachable.

>
> > ... snip ...

>
> > >> Why don't you post the requirements for both of these functions,
> > >> and the code you've written so far, and we'll see if we can
> > >> assist you in getting it right.

>
> > > These are the functions of Stephen G Kochan posted on his website,
> > > but to answer my book questions I miss the substr and removestr
> > > function to understand how these functions are implemented.

>
> > > int findString (const char source[], const char s[])

>
> > ... snip much code ...

>
> > You posted all that but didn't bother to answer Lews question.
> > Describe, in detail, what those functions (substr and removestr)
> > do. Include a complete prototype.

>
> > --
> > Chuck F (cbfalconer at maineline dot net)
> > <http://cbfalconer.home.att.net>
> > Try the download section.

>
> > --
> > Posted via a free Usenet account fromhttp://www.teranews.com-Zitierten Text ausblenden -

>
> > - Zitierten Text anzeigen -

>
> Thanks for all!- Zitierten Text ausblenden -
>
> - Zitierten Text anzeigen -


I coded the substring function and it works fine but I have problems
with the removestr function. I want to code this function without any
pointers. I'm not sure how can I delete a char in C because '\0' is
the end of each string and it terminates the string. I tried to set
dst[i] = ""; but then I got an errormessage "warning: assignment makes
integer from pointer without a cast", so "" doesn't work.

Thanks for any help!

Tom

Prototyp: void removestr(char [], char [])

Use:

char string[100] = "This is a text\n";
removestr(string,"This");
printf("%s",string) /* the result should be "is a text" */


void removestr (char dst[], char find[])
{
int i,l;
for(i = 0, l = 0; dst[i] != '\0' && find[l] != '\0'; i++, l++)
if(dst[i] == find[l])
{
dst[i] = '\0'; /* I think here is the problem because it terminates
the whole dst */
}
dst[i] = '\0';
}

 
Reply With Quote
 
Lew Pitcher
Guest
Posts: n/a
 
      12-03-2007
On Dec 2, 10:56 am, tfelb <(E-Mail Removed)> wrote:
> On 27 Nov., 16:08, tfelb <(E-Mail Removed)> wrote:
>
>
>
> > On 26 Nov., 22:53, CBFalconer <(E-Mail Removed)> wrote:

>
> > > tfelb wrote:
> > > > Lew Pitcher <(E-Mail Removed)> wrote:
> > > >> tfelb <(E-Mail Removed)> wrote:

>
> > > >>> I bought the book "Programming in C" by Stephen G Kochan. I miss
> > > >>> 2 answers at his website. (removestr and the substr function)
> > > >>> How can I implement these functions? It would be wonderful if
> > > >>> someone can help me out, because Stephen Kochan is not reachable.

>
> > > ... snip ...

>
> > > >> Why don't you post the requirements for both of these functions,
> > > >> and the code you've written so far, and we'll see if we can
> > > >> assist you in getting it right.

>
> > > > These are the functions of Stephen G Kochan posted on his website,
> > > > but to answer my book questions I miss the substr and removestr
> > > > function to understand how these functions are implemented.

>
> > > > int findString (const char source[], const char s[])

>
> > > ... snip much code ...

>
> > > You posted all that but didn't bother to answer Lews question.
> > > Describe, in detail, what those functions (substr and removestr)
> > > do. Include a complete prototype.

>
> > > --
> > > Chuck F (cbfalconer at maineline dot net)
> > > <http://cbfalconer.home.att.net>
> > > Try the download section.

>
> > > --
> > > Posted via a free Usenet account fromhttp://www.teranews.com-ZitiertenText ausblenden -

>
> > > - Zitierten Text anzeigen -

>
> > Thanks for all!- Zitierten Text ausblenden -

>
> > - Zitierten Text anzeigen -

>
> I coded the substring function and it works fine but I have problems
> with the removestr function. I want to code this function without any
> pointers. I'm not sure how can I delete a char in C because '\0' is
> the end of each string and it terminates the string. I tried to set
> dst[i] = ""; but then I got an errormessage "warning: assignment makes
> integer from pointer without a cast", so "" doesn't work.
>
> Thanks for any help!
>
> Tom
>
> Prototyp: void removestr(char [], char [])
>
> Use:
>
> char string[100] = "This is a text\n";
> removestr(string,"This");
> printf("%s",string) /* the result should be "is a text" */
>
> void removestr (char dst[], char find[])
> {
> int i,l;
> for(i = 0, l = 0; dst[i] != '\0' && find[l] != '\0'; i++, l++)
> if(dst[i] == find[l])
> {
> dst[i] = '\0'; /* I think here is the problem because it terminates
> the whole dst */
>
> }
> dst[i] = '\0';
> }



OK, well you really missed the idea, didn't you?

I'm not even going to attempt to help fix your immediate problem in
this code, as this code does not now (and likely never will) answer
the requirement of deleting an arbitrary substring from an arbitrary
string.

So, lets start at the beginning; here's how I would delete an
arbitrary substring from an arbitrary string:

1) locate and note the beginning of the substring in the string - If
not found then exit
2) locate and note the first character following the substring in the
string
3) for each character in the substring,
copy the character following the substring (point 2) over the
character in the substring (point 1)
move forward one character in the substring (point 1)
move forward one character following the substring (point 2)


void removestr(char *dst, char *find)
{
char *start, *end;
if (!(start = end = substring(dst,find))) return; /* exit if the
substring cant be found */

while (*find) {++find; ++end;} /* advance
past substring */
while (*end) {*start = *end; ++start; ++end;} /* copy
remainder over substring */
}

HTH
--
Lew
 
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
Using Substr and Regular expressions. kent.westmoreland@gmail.com Perl Misc 12 03-08-2007 12:40 AM
Semi OT: Uniquely Identifying Substrings for an Elem in a Set: substr, Sets and Complexity Veli-Pekka Tštilš Perl Misc 6 08-23-2005 09:10 AM
[C++] Odd Problem with "substr" entropy123 C++ 7 06-01-2005 11:38 PM
Time Complexity for substr() function Walter Roberson Perl Misc 1 05-13-2004 10:21 PM
getline and substr Kees Hoogendijk C++ 4 12-21-2003 10:23 AM



Advertisments