*str++ = toupper(*str); でダメなら
*str = toupper(*str++); で動くんじゃない?

……って真に受けるなよ。別の悪魔が出てくるだけだからな。
たとえ期待通りの動作になったとしても、たまたまだからな。