--- In [email protected], "Brett McCoy" <[EMAIL PROTECTED]> wrote:
>
> On 10/31/07, nimak247 <[EMAIL PROTECTED]> wrote:
> 
> > Hello all, I am brand-spanking new to C++, but love it already (At
> > work I sorta picked up vba, and I had a lot of fun with it and wanted
> > to try a real language just to increase my understanding of
> > programming, so here I am)! I do have a question on something so basic
> > I feel that even I should be able to figure it out (but can't). I am
> > attempting to take a string and convert the whole thing into upper
> > case, for which I have written the following lines:
> >
> > while (*str++)
> >    *str = toupper(*str)
> >
> > ..which I thought meant: make char at first address uppercase, then
> > move to the next address; continue until null is reached. But, when I
> > run the code, it converts all the elements but the very first one. I
> > must be misunderstanding something here, but I am not sure what. Can
> > anyone lend a hand here? "str" in this case is the name of the char
> > array, so I thought it would return the address of the first element
> > in the array...
> 
> Because the loop skips over the first character on the first iteration
> (you increment the pointer then do the operation). You need to do the
> operation and then increment, like with a do ... while loop
> 
> do {
> 
>    ...
> 
> } while(*str++);
> 
> You could also use a for loop as well.
> 
> -- Brett
> ------------------------------------------------------------
> "In the rhythm of music a secret is hidden;
>     If I were to divulge it, it would overturn the world."
>                -- Jelaleddin Rumi
>

Brett, thank you for helping me to understand this! 

Got it. Of course the increment would be applied for every iteration
of the loop, including the first one (Doh!)- for some reason I thought
the increment would not happen on the first iteration.

I appreciate the help and the complete lack of snickering, flaming, or
any other derision for my oh-so-rookie-ness!!

nimak

Reply via email to