EXPLODE ROUTINE

halloran at sldv21.mdcbbs.com halloran at sldv21.mdcbbs.com
Fri May 3 17:31:18 AEST 1991


In article <15431 at life.ai.mit.edu>, sah at gnu.ai.mit.edu (Tarador) writes:
>
>    The following program is akin to the MUF primitive EXPLODE, if any of
> you are familiar with MUCK.  Anyway, it works like this:
>    x = explode(char *data, char *trigger, char **array);
>   Where x is an int, *data is a a data string, *trigger is the string to
> explode on, and **array is filled by results.
>   So,  x = explode("Hello.Test", ".", results);
>  That SHOULD put "Hello" in results[0] and "Test" in results[1].  But,
> for some reason, I keep getting a bus error.  Program follows:
> 
> int explode();
> main()
> {
> 	int c,cc;
> 	char **arr, x[50], trig[5];
> 
> 	gets(x); gets(trig);
> 	cc = explode(x, trig, arr); 
> 	for (c=0;c<cc;++c)
> 		printf("%s\n", arr[c]);
> }
> int explode(char *data, char *trigger, char **array)
> {
> 	int x;
> 	int last=0, ctr=0;
> 	char dummy[512];
> 
> 	for (x=0;x<strlen(data);++x)	{
> 		if (!strncmp(&data[x], trigger, strlen(trigger)))	{
> /* Here's the bus error*/  strncpy(array[ctr], &data[last], x);

	You have failed to allocate memory into which you wish to copy.
	array (or main::arr), is typed as a pointer to a pointer to char
	but where does it point???  Anywhere!  You have not initialized
	the pointer to valid memory.

> 			last = x+strlen(trigger);
> 			++ ctr;
> 		}
> 	}
> 	return ctr;
> }
> 
>   Please post suggestions, etc., to sah at gnu.ai.mit.edu.  Thanks.
> --
> +-------------------------------------------------------------------------+
> | Tarador Dranon                       MIT: sah at gnu.ai.mit.edu            |
> |             C-Guild: vidco%cguild%valnet at iuvax.cs.indiana.edu           |
> +-------------------------------------------------------------------------+
-- 

	Mark J. Halloran      |    Voice: (314) 233-6973
	McDonnell Douglas M&E |      Fax: (314) 232-8698
	Dept C705 MC 3065386  | Internet: halloran at sldev1.mdcbbs.com
	St. Louis, Mo. 63166  |     UUCP: uunet!sldev1.mdcbbs!halloran



More information about the Comp.lang.c mailing list