From: Koji Arai Date: 2001-03-17T09:01:17+09:00 Subject: [ruby-list:28815] Re: fgets 新井です。 In message "[ruby-list:28814] fgets" on 17 Mar 2001 08:20:34 +0900, Kazuhiro NISHIYAMA wrote: > C言語のfgetsのようなサイズ制限付きのgetsをしようとすると > 下のように少しずつ読み込んで自分でチェックするしか無いの > でしょうか? こういうのはどうですか?定義した fgets 以外のIO操作を使うとダメですが。 class IO def fgets(limit, rs = $/) return @save.slice!(0, limit) if @save and @save.size > 0 s = gets(rs) if (s.nil? or s.size < limit) @save = nil s else @save = s s.slice!(0, limit) end end end open($0) {|f| while s = f.fgets(20) p s end } => "class IO\n" " def fgets(limit, r" "s = $/)\n" " return @save.sli" "ce!(0, limit) if @sa" "ve and @save.size > " "0\n" "\n" " s = gets(rs)\n" " if (s.nil? or s." "size < limit)\n" " @save = nil\n" " s\n" " else\n" " @save = s\n" " s.slice!(0, li" "mit)\n" " end\n" " end\n" "end\n" "\n" "open($0) {|f|\n" " while s = f.fgets(" "20)\n" " p s\n" " end\n" "}\n"