Ahhhhh, I type WAY too slow! There's some repeated info here.
How do I change the contents one of the items in the 'temps' array to the new value?
LOL! Here are some options. You can use strcpy(), or strncpy() which does not add a terminating zero, or you can change individual chars. You can access using indexes (like [0] or [3]) or using pointers or (I won't show this, it's bad practice) direct memory addressing.
First, you want to fix this:
char* temps[] = {" 000.00"," 000.01"," 000.02"," 000.03"," 000.04"," 000.05"," 000.06"," 000.07"," 000.08"," 000.09",}; // ascii string of temperature
to this to eliminate waste space. Add the space as a print( " " ) and save memory.
char* temps[] = {"000.00","000.01","000.02","000.03","000.04","000.05","000.06","000.07","000.08","000.09",}; // ascii string of temperature
That doesn't -have- to be but note that it makes coding easier when they're all the same layout.
That char * array is equivalent to
const byte tempsLen = 7;
char tempstrs[][tempsLen] = {"000.00","000.01","000.02","000.03","000.04","000.05","000.06","000.07","000.08","000.09",}; // ascii string of temperature
char *tempPtr = tempstrs[0]; // points to the 1st string
*char *tempPtr = tempstrs; // same as above without the [0] index
tempstrs += 3 * tempsLen; // now points to the 4th string without using an index
tempstrs++;
*tempstrs = 3; // so now tempstrs[3] is "030.03"
Just to show the difference between a 1D array of char pointers and a 2D array of chars is only how you access them using indexes. With the latter you can index to any char in the array. With pointers you can point to any char in the array whether there's an index or not.
You could just define a buffer ( char buff[ buffLen ] ) and fill it with strings by offsetting a char * and using strcpy() to write the data as long as you control the length of what you write. You can even lose the terminating zeros if you don't use string commands that require them. Yes, there are a few but doing that is messy and requires either an array to move chars to and add the zero to that to print() or to print 1 char at a time which is s-l-o-w-e-r. But... it can be done and it can save memory if you have enough strings. Ordinarily though it's not good practice.
BTW, using char *temps[] = .... will let you have unequal length char strings. Sure then you can't use a constant offset to advance a pointer from string to string, using the index becomes necessary unless you read every char in turn looking for the NULL (==0) chars all the way, which is messier than indexes. But... you can.
I like using pointers more than IMO messy indexes. Writing to use pointers means your functions don't have to know about indexes or dimensions of indexes. Learn the power of pointers and you will be able to write tighter code that total novices will complain is obfuscated! Funny how they're an integral part of the language, how many functions take and return pointers? We -all- start as noobs but only some -stay- noobs.
This is more than worth learning, it may change your coding-life:
http://pw1.netcom.com/~tjensen/ptr/pointers.htm
Very useful page link for C string array commands:
http://www.nongnu.org/avr-libc/user-manual/group__avr__string.html
I have the page 'above' that one (string.h page) bookmarked for easy access.
http://www.nongnu.org/avr-libc/user-manual/modules.html
Lastly for all your constant strings and values, learn about PROGMEM to keep those in flash and save your RAM for things you change and stack space to run on.