質問: a[i]; } printf("%s", moji); free(moji); return 0; } ``` ### 実行結果 ``` 文字列を入力 最大16文字:ABCD ヘDCBA・・・・続行するには何かキーを押してください . . . ```
回答: こんにちは。 先頭が可笑しいですね。 例えば4文字の場合j=4です。そして、i=4の時a[i]=='\0'が成立しますので、i=4の時for文の中は実行されません。 ということは、moji4-4には何も設定されませんので不定値となり先頭の文字がおかしくなります。 `moji[j-i-1]=a[i];`で設定すれば良い筈です。 また、moji配列の最後に'\0'を入れるのを忘れているようです。 C言語の文字列は'\0'で終了しますので、'\0'が無い場合まだ文字列が続いていることになり、入っているでたらめな値を文字として表示しようとして変な文字が出てしまいます。 `moji[j]='\0';`を適切な位置に書けばOKの筈です。