Andrew wrote: > Hi all, > > I'm trying to design my own events system, using a queue type method. > What I need to do is store certain information (in this case a command) > into a char array. I'll give you an example... > > char eventarray[30000]; > > void set_event(int time, long idnum, char *comm) > { > eventarray[0] = *comm; /* Put's all of comm into 0 */ > } > > That's a part of my code. I can see what it's trying to do - it's trying > to put a large string into the space designed to hold only a single byte. It copies the first character of comm to the first character of event array. eventyarray[0] and *eventarray are actually equivalent, they both have type char, you could have just as well written *eventarray = *comm, or evenarray[0] = comm[0] To copy a string you must use strcpy, this isn't C++ where you can override the = operator to make it do strcpy for you. C has no builtin string type. > But I have seen bits of code that look like this.... > > char stuff[] = {"Hello", "how", "are", "you?"}; This is an array of pointers to char, each constant "FOO" is an array of characters and an array by itself is treated like a pointer, so If I write "FOO" in my code, C treats it like a pointer to an array. In other words, "FOO" is a shortcut for { 'F', 'O', 'O' } > and then stuff[0] points to Hello, stuff[1] points to how etc. etc. stuff[0] is a pointer, not a character. stuff[0][0] would be the 'H' in hello, it is a character. > Any ideas? To manipulate strings use the string library. The only type that C knows how to handle is characters. The string library is designed to handle arrays of characters that end in '\0' char *foo = "Hello" is valid, because you can point foo at "Hello", they both are considered to be pointers to a constant string. char foo[] = "Hello" is basically the same thing. char foo = "hello" is not valid, because foo is a character, "hello" is a pointer to a character (the first character of the array). I remember having this confusion about C string when I first started, mainly because I came from Basic. > Andrew Ritchie. > > | Andrew Ritchie, object@alphalink.com.au. > > +------------------------------------------------------------+ > | Ensure that you have read the CircleMUD Mailing List FAQ: | > | http://democracy.queensu.ca/~fletcher/Circle/list-faq.html | > +------------------------------------------------------------+ -- Phoenix -- President of The Artistic Intuition Company Caelius * Mirror Reflex * Runica * X-Domain * Infinite Realms http://www.io.com/~fenix +------------------------------------------------------------+ | Ensure that you have read the CircleMUD Mailing List FAQ: | | http://democracy.queensu.ca/~fletcher/Circle/list-faq.html | +------------------------------------------------------------+
This archive was generated by hypermail 2b30 : 12/15/00 PST