You should be using a strcpy(or strncpy ) here.. otherwise you set your
PORT string to point to someplace in your line string.. which I'm assuming
is a local variable and will probably get overwritten when doing function
calls.. try a
just be sure that before this you have called
comm_settings.PORT = malloc(sizeof(char),SIZE);
somewhere before you decide to use PORT
and free(comm_settings.PORT) somewhere when you are done.
strncpy(comm_settings.PORT,++equal_ptr,SIZE);
where SIZE is max size of comm_settings.PORT minus one.. then set the last
char to null to make sure you are null terminated..
On Tue, 19 Jun 2001, Glen wrote:
>
> In another function, parse_comm_config():
>
> <snip>
> 	if(strstr(line, "PORT")){
> 		equal_ptr = strchr(line, '=');
> 		comm_settings.PORT = ++equal_ptr;
> 		comm_settings.PORT[strlen(comm_settings.PORT)-1] = '\0';
> 		equal_ptr = NULL;
> 		continue;
> 	}
> <snip>
>
> 	line[] is a char * to a line of text read in from a config file with
> fgets(). It's read in just fine here, as shown when I print it with fprintf()
> from the calling function after this one returns. The char *equal_ptr is
> nullified after each line is parsed for safety's sake (i.e. I did a stupid
> oops later on in the code with this).
>
> 	Glen
>
>
> On Tuesday 19 June 2001 21:45, you wrote:
> > where and how do you set the PORT character pointer?
> >
> > Ed.
> >
> > Glen wrote:
> > > Dear list,
> > >
> > >         I have been having trouble with something very odd. Here is my
> > > global struct:
> > >
> > > struct{
> > >         int BAUD;
> > >         int PARITY;
> > >         int DATA;
> > >         int STOP;
> > >         int FLOW;
> > >         int FLAGS;
> > >         char *PORT;
> > > }comm_settings;
> > >
> > > When I call a certain function, the char * variable in the struct gets
> > > killed. Observe:
> <snip>
>
This archive was generated by hypermail 2.1.3 : Fri Aug 01 2014 - 19:23:35 EDT