>>223
ありがとうございます。

p2++;  が意味なく、*p2=*p1で格納したアドレスの文字のひとつ後ろの文字を指すことに気づきました。
しかも、結局while中の*p2=*p1で格納しなおした orz...
*p2++;がいらなかった。

で、消してコンパイルすると
結果は ZYXWVUTSRQPONMLKJIHGFEDCBB となりました。
Aがでない。

while(p1>=str)だと *p1='A'のときもちゃんと動くはずだと思ったんですが・・・

しかも、>>222の結果と異なる理由が分からないw
それにしても、>>222のプログラムでも意味のない動作はしているけれど、結果だけは思い通りにでるような気がします。


あと、考えているうちに、p2を使う意味がないんじゃないかと思い

while(p1>=str){
putchar(*p1);
p--;
}

と改変しましたら、とりあえず動作しました。しかし、ポインタの勉強のためにもp2をつかってやってみようと思います。
めげずにご指導ご鞭撻のほどを m(_ _)m