C言語の文字列の扱い

 研究室では一番上の学年であるため、後輩のプログラムを手伝う機会が多くあります。彼らの扱う言語はなぜか統一性がなく、VBC/C++C#JavaPHPPerl等が用いられています。彼らはどちらかというと開発のエキスパートからは遠く、プログラミングの経験が浅いため、どの言語も質問が来ます。

 今日はC言語で書かれたコードのデバッグを手伝ったのですが、長時間かけて原因を追求したところ、文字列の扱いに行き着きました。char型のポインタ変数に文字列変数を代入するか、strcpyを用いて配列に文字列をコピーするか、この2つはC言語においてはまったく違います。しかし、書いた本人はその違いをまだ理解できていないらしく、=演算子でコピーできると思っていたようで、そこに原因がありました。

 昨今の言語では文字列に対してC言語ほど気を遣う必要はありません。C++でも文字列についてもっと扱いやすい環境が用意されています。しかし、C言語を使うのならポインタを理解しておいてほしいと思いますし、ポインタを理解していればこの問題は発生しなかったと思います。