2014年4月17日0件のコメントこんにちは、Sayahamittです。TLに流れてきたAOJの問題を解答しようとしたらあらぬ勘違いで1時間くらいハマったので戒めを込めて書きます。解いたのは次の問題http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=0006&lang=jp20文字までの半角英数字の文字列入力に対して、文字の順序を反転させて出力せよ。́Д`)で、何をやらかしたかと言うと、文字列終端の処理を勘違いしていたのです。ヤらかしているコードがこれです。́・ω・`))fgetsで20文字分入力を取って、その文字列を逆から辿って一文字ずつ表示してやろうという魂胆です。キーボードからの入力を取るのに一般的にはscanf()ではなくfgets()を使うと思います。fgets関数では改行コードも文字列の一部として取得し、取得した文字列の終端にNULLターミネータを付加するわけですが、私はNULLターミネータと改行コードをなぜか混同していて二者の区別が判然としていませんでした。なっていることに気が付かず、ターミネータを起点にして一文字ずつ逆から表示していった結果、謎(思い込み)の改行が発生してしまった、というのが事の顛末です。ifの条件にstr[i]!=10を追加するだけです。́д`)以上、ドジ記録でした。コメントをキャンセルメールアドレスが公開されることはありません。*サイト次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。コメントデータの処理方法の詳細はこちらをご覧ください。