[Techtalk] C Programming Question

S. Gwizdak wazm at rm-f.net
Wed May 29 00:32:47 EST 2002


> Hi,
>     I'm having a problem with pointer-to-array in C.
> I have to use the structure char  *somename[ ] . I also
> need to store/assign data to the strings halfway thro the
> program. ( I know I can initialise it as :
> char  *somename[ ] = {"data1","data2"}; etc.
> At some point in the program I need to change "data1"
> to "somethingelse1" . How do I do that?
> Thanks in advance.

Ok, here's a representation of your data structure:

 somename
 |
+-+
|0| ------------> data1\0
+-+
|1| ------------> data2\0
+-+
|2| ------------> data3\0
+-+

So, let's play with some code:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main() {
    char *p;
    char *somename[] = {
                         "data1",
                         "data2",
                         "data3"
                       };

    printf("%s\n", somename[1]);
    p = strdup("somethingelse1");
    somename[1] = p;
    printf("%s\n", somename[1]);

}

strdup() is a cute little function that will malloc() some
memory, and copy the string you just sent it, into that memory.

I then tell somename[1], which happens to be a pointer, to point
at an area of memory that now contains "somethingelse1\0".

--
/* S. Gwizdak  http://www.unf.edu/~gwis0001       */
int q[2561];main(y){putchar(y%80?(q[y]=y==40?1:y>80?
q[y-81]^q[y-79]:0)==1?42:32:10);y==2560?:main(++y);}



More information about the Techtalk mailing list