わさっきhb

大学(教育研究)とか ,親馬鹿とか,和歌山とか,とか,とか.

コードレビューしながら授業のプランを立てる

情報ネットワーク演習のコードレビューをしています.課題は10月に実施したもので,学生のほうがほぼ忘れているかもしれませんが,プログラミング技術向上のために実施しています.だれの技術向上か,と言いますと,まずは学生それぞれなのですが,読んでいくと,私自身も参考になることがあります.
課題の中に,「ソケットを介して,1行分,すなわち改行文字が来るまで読み出して出力する」という機能のコード化が含まれています.
簡単にするなら,上のカギカッコの通りにして,「1バイト単位で読み出して(そのつど)出力する」ことにすればいいのですが,後の課題のプログラムを作るとき,この方法では苦労します.
かわりに,「1バイト単位で読み出して,1行分を何らかのメモリ領域に格納し,改行文字が来た時点で,文字列として出力する」という方針で作れば,“今苦労して後で楽する”ことができます.
ただし,ソケットを介した相手が送ってくる1行が何文字になるかは,上限が決まっていません.
mallocとreallocを使って,「必要に応じて文字列領域を増やす」というのがこちらの意図なのですが,まだ全学生のコードを見ているわけではないものの,この意図通りにコードにしているのは一人だけでした.しかもどうやら,コードが間違っているようです.
文字列に限らず「可変長」の概念,そして文字列を対象としてそれをどのようにCで書けばいいかについて,1年生の授業の終盤で取り上げることにしましょう….