Thank you so much! That solved the conversion problem. However, I am still curious to know why the same value was displayed even though the index was changed.
Wrapping it in String(....) creates a temporary String object, copies the original string into that object and then provides the pointer to the temporary String object (which is not the pointer to the buffer that now contains the copy tho') to the string formatting routine (e.g. sprintf()).
Hence you don't want to do that.
That's also the answer to that question - you are dealing with the pointer to your temporary String object which will be created in the same spot on the stack over and over again (although the internal string buffer will often not be as it's dynamically allocated on the heap).
BTW, since you are not intending to change your strings nor the pointers to those strings you should consider declaring them as const char* const conditions[] (an array of immutable pointers to non-changable strings).