勝手にしやがれ Part2.

【投稿時の注意】
パスワード入力:必須。投稿後の削除時は同じパスワードを使います。
投稿者入力:いまのところ任意。入力を省略すると「名無しさん」がデフォルトで表示されます
Eメール入力:いまのところ任意。
リンクの入力:本文中に http の文字列が含まれると投稿出来ません。URL を貼るときは h 抜きで ttp:// とするなど工夫してみて下さい

3 / 13 ツリー ←次へ | 前へ→

【66】難しいのかもしれない要望です(logsortw)m(__)m 文太 2008/09/19(金) 0:47

【110】Re:LOGSORTW ver1.25.2 文太 2008/10/04(土) 10:46
【112】Re:LOGSORTW ver1.25.2 Si 2008/10/05(日) 1:09
【113】Re:LOGSORTW ver1.25.2 文太 2008/10/05(日) 15:29
【114】Re:LOGSORTW ver1.25.2 Si 2008/10/06(月) 0:04
【115】Re:LOGSORTW ver1.25.2 文太 2008/10/06(月) 0:20
【117】Re:LOGSORTW ver1.25.2 文太 2008/10/06(月) 22:46
【118】Re:LOGSORTW ver1.25.2 文太 2008/10/07(火) 23:15
【120】Re:LOGSORTW ver1.25.2 Si 2008/10/08(水) 1:13
【123】Re:LOGSORTW ver1.25.2 文太 2008/10/08(水) 23:20
【124】Re:LOGSORTW ver1.25.2 としき 2008/10/09(木) 22:09
【125】Re:LOGSORTW ver1.25.2 文太 2008/10/10(金) 18:02
【127】Re:LOGSORTW ver1.25.2 としき 2008/10/11(土) 12:53
【128】Re:LOGSORTW ver1.25.2 文太 2008/10/11(土) 13:28
【138】Re:LOGSORTW ver1.25.2 Si 2008/10/19(日) 23:34
【139】Re:LOGSORTW ver1.25.2 としき 2008/10/20(月) 22:21
【140】Re:LOGSORTW ver1.25.2 文太 2008/10/20(月) 22:32
【142】Re:LOGSORTW ver1.25.2 としき 2008/10/20(月) 23:42
【143】Re:LOGSORTW ver1.25.2 文太 2008/10/21(火) 13:20
【147】Re:LOGSORTW ver1.25.2 としき 2008/10/21(火) 20:48
【148】Re:LOGSORTW ver1.25.2 文太 2008/10/22(水) 10:58
【146】EOF? 文太 2008/10/21(火) 14:26
【150】ファイル末改行付加 文太 2008/10/22(水) 21:18

【110】Re:LOGSORTW ver1.25.2
 文太  - 2008/10/04(土) 10:46 -

引用なし
パスワード
   Siさん

(niftyヘッダ一行目のエラー処理について)
> 了解頂いてありがとうございました。

 いえいえ、僕の了解なんて。それでも、konno さんまで要望を出されて、過去
ログ・コレクターとしてはうれし涙ものです。

> テキスト処理のベテランである文太さんにしては全角空白をサンプルログの
> ヘッダ部分にいれるのは変だなぁ、とは思っていたのですが、

 いえいえ2。残念なことに、しょっちゅうやってるんですよ。あああ、やば、
バグ・レポートがバグってどうする! みたいに。

>  まだ、良く理解できていないのですが、「等幅」投稿の場合半角空白が連続する
> と全角空白文字に置き換えられてしまう、ってことですかね?

 ですね。タブもですが。ま、プログラム(ないしプログラムに食べてもらうデータ)
を投稿するときには、「等幅」は避けること、ってとこでしょうね。
 掲示板管理者の皆さまは苦労されているようです。m(__)m

(出力が2方向のstdout, stderrに分かれている件)
> 良かったです。では以降のバージョンもこの方向で。

 はい。すばらしい仕様です。m(__)m

【112】Re:LOGSORTW ver1.25.2
 Si  - 2008/10/05(日) 1:09 -

引用なし
パスワード
   ▼文太さん:
>(出力が2方向のstdout, stderrに分かれている件)
>> 良かったです。では以降のバージョンもこの方向で。
>
> はい。すばらしい仕様です。m(__)m

こう云う出力方法をするコマンドラインツールってあまりないのかな?変態仕様 ^^;

^M のゴミ対策も目途が立ちましたのでそろそろ正式公開の方向に進もうかと思っています。

いま自分で気になっているのはログファイルの最後が改行なしで終わっているケースの対応です。

あいうえお[EOF]

こんなケースです。LOGSORT でソートをかけるとこの行は削除されます。
確か、air craft の分割ログの最後にこう云うパターンが出力されることがあるのですが、意味のない行なので出力しないような仕様になっています。

テキストデータをNIFTYログ形式に加工して活用されているみなさんが、最終行にちゃんと改行を入れてくれれば問題ないのですが、念のためチェックするルーチンを入れた方が良いかどうか思案してます。

文太さんや konno さんのおかげで久々のバージョンアップとなりそうですが、何かご希望とかあればいまのうちにどうぞ。あまり難題だったら次々バージョンに回しますが ^^;

【113】Re:LOGSORTW ver1.25.2
 文太  - 2008/10/05(日) 15:29 -

引用なし
パスワード
   Siさん

>(出力が2方向のstdout, stderrに分かれている件、再び)
> こう云う出力方法をするコマンドラインツールってあまりないのかな?変態仕様 ^^;

 変態なことはないですよ。 よく考えてみれば(ちょっと調べたのですが)、
「たとえばパイプで、エラーメッセージが次への入力にならないように」 という
stderr の原理に則った正しい使い方ですよね。

>  ^M のゴミ対策も目途が立ちましたのでそろそろ正式公開の方向に進もうかと

 いいですね。

> いま自分で気になっているのはログファイルの最後が改行なしで終わっている
> ケースの対応です。

 いちおうフィルターは勝手に入力を破棄したりしてはいけませんので、許して
やってそのまま出力のほうが理想でしょう。同じようなのがsedのNコマンドにあ
ったりします。昔のsedは、最終行でNができない(次行のパターンスペースへの
追加)状況下だと、すでにあるパターンスペースを破棄する仕様でした。なので
「$!N」 (最終行でなければN)というのが慣用句でしたが、「あの、Nコマン
ドの仕様変えませんか? 」と誰かが言い出し、GNU sedでは、そうなってます。
最終行処理がスクリプト上まずくても、とりあえずパターンスペースを吐き出す
仕様、というわけです。


 で、その問題がうちで起こるかは、下のように調べました。

C:\TK\VZLOG\DC>Wild -D -R "tail -1 $f >>c:\kek" *.log
<< 環境変数対応 Wildcard 展開プログラム Ver.1.34 >>
          Copyright (c) 1996-98 by namazu & Si
DEBUG MODE:tail -1 C:\TK\VZLOG\DC\01\DC01~012.LOG >>c:\kek
DEBUG MODE:tail -1 C:\TK\VZLOG\DC\02\DC02_968.LOG >>c:\kek
DEBUG MODE:tail -1 C:\TK\VZLOG\DC\02\DC02_981.LOG >>c:\kek
(以下50行続く)

 これがうまくいってる瞬間といったらシアワセの一言。 「tail -1」で最終行
出力です。 普通にワイルドカード使うと、(別件ですが)昔のsedと同じく、全
部の入力ファイルの最後だけを出力してしまうので意味をなさない(各ファイル
の末尾がみたいので) 。 で、ディレクトリ再帰つきワイルドカードの展開!!
機械が書いてくれるバッチファイル!! ワイルドくん、き、君はエライ! 最高!

 ああ、気持ちよかった。
 で、結論:エアクラを使った時期もあったのですが、僕の手元のログには

あいうえお[EOF]

 はなかったですね(なんやねん)。ま、これは行儀の悪いファイル管理ですから。
(^^;ゞ

> テキストデータを NIFTY ログ形式に加工して活用されているみなさんが、最終
> 行にちゃんと改行を入れてくれれば問題ないのですが、念のためチェックするル
> ーチンを入れた方が良いかどうか思案してます。

 「念のために」入れられるものなら。少なくとも捨てないで m(__)m

>  文太さんや konno さんのおかげで久々のバージョンアップとなりそうですが、
> 何かご希望とかあればいまのうちにどうぞ。

 複数会議室のログも試しました。 完璧でした。今のところ、logsortwはすでに
完成されているように見えてます。m(__)m

【114】Re:LOGSORTW ver1.25.2
 Si  - 2008/10/06(月) 0:04 -

引用なし
パスワード
   ▼文太さん:
> いちおうフィルターは勝手に入力を破棄したりしてはいけませんので、許して
>やってそのまま出力のほうが理想でしょう。(以下略)

基本はその通りなのですが、いろいろ事情がありまして・・・

まず、例えが悪かったですね。
実際は、TTY でのNIFTY のプロンプト文字列で、例えば、

CCS(N)>[EOF]

このようなものが air craft の分割ログの最後に出力されることがあります(ました)。メッセージ本体とは関係のないいわばゴミデータなので、LOGSORT ではソート後の出力時にカットするような仕様になっているのです。

それともうひとつ。エディタのマクロなり、テキストを扱うツールなどで作られた NIFTY形式のテキストデータでも、最終行が改行なしで終わっているケースがあったとして、これをそのまま出力するとなるとおかしなことになってしまいます。

上の方であげられている文太さんのサンプルを少し変えて下のようログがあった場合、

00002/00002 XXX00000 文太       dummy title[CRLF] 
( 1)  04/09/30 01:20[CRLF]
[CRLF]
00001/00002 XXX00000 文太       dummy title[CRLF] 
( 1)  04/09/30 25:20[EOF]

後のメッセージの方が番号が若いですから、「そのまま出力」する仕様で LOGSORT でソートをかけると、

00001/00002 XXX00000 文太       dummy title[CRLF] 
( 1)  04/09/30 25:2000002/00002 XXX00000 文太       dummy title[CRLF] 
( 1)  04/09/30 01:20[CRLF]
[CRLF]

たぶんこんな風になってしまいます。これやっちゃうとログがまずいことになってしまいますよね?こうなる理由は LOGSORT では勝手に(元データに存在しない)改行コードを出力しないからです。

と云うことで、

> 「念のために」入れられるものなら。少なくとも捨てないで m(__)m

捨てたいです ^^;

やるとしたら、ひとつひとつのメッセージ本体を出力する度に、最後に改行コードが存在するかどうか判定するルーチンを追加して、なければ改行コードをアプリ側で追加出力してやる。と云う処理が必要となります。

効率悪そうなので、あまりこれはやりたくないです。

いま考えているのは、前処理としてファイルの終端を見に行って、そこが改行無しで終わっている場合に、その旨のエラーメッセージを表示して終了させる、って方向です。

> 複数会議室のログも試しました。 完璧でした。今のところ、logsortwはすでに
>完成されているように見えてます。m(__)m

ありがとうございます。

【115】Re:LOGSORTW ver1.25.2
 文太  - 2008/10/06(月) 0:20 -

引用なし
パスワード
   Siさん

> > 「念のために」入れられるものなら。少なくとも捨てないで m(__)m
> 捨てたいです ^^;

 なるほど、なるほど、プログラムする側としては悩むわけですね。分かります
よ、僕でも。捨てましょう!

 ヘッダが2行でそのあと本文が続くというパソ通なログに固有な問題なのです
ね。誰かが何か言うかもしれませんが、僕はマクロの側でそういう状況が発生し
ないようにコーディングしておきます。細かいところまでお教えいただきありが
とうございました。そんな状況が発生しないようにするのは、「それをしておか
なくてないけない」とちゃんとインプットされていれば、訳ないことなのです。
あくまで個人的なレベルでは、ということですが。
 (手元のログではないことなのも確認済みだし…。)

 了解でーす。m(__)m


 けっこう疲れてますよね、お互い。ここまでSiさんがつき合ってくれるとは思
ってなかった。実はけっこうヘロヘロ。明日から(今日からですが)、新しい週
の始まり! ゆっくりでいいですからね。変なバグ・レポートもかつて入ってい
たわけですから。

【117】Re:LOGSORTW ver1.25.2
 文太  - 2008/10/06(月) 22:46 -

引用なし
パスワード
   Siさん

 どうでもいいメモです(すいません)。

aaaaa[EOF]
 な終端をもつファイルの最後に改行を加える方法は何がいいのかなぁ、と考え
ていて、はまりました。Vzマクロ以外です。

方法1
>lsed "p;d" file    #logos版sed、この版以外だと深くはまっちゃいます。
            #嫌なんですけど、こういうの。
方法2
>lsed "n" file        #logos版sed

方法3
>oldsed "n" file    #serow版sed

方法4
>jgawk "{print}" file    #素直、素直

方法5
>mbsed "$s/[^\n][^\n]*/&\n/" file    #Bruce.版。こんな真面目な置換は
                    #大袈裟だよ。

 そっかあ、フィルタは一般にファイル末に改行がないならそのままにしておく
ものなんですね。xtr で付かなかったのは、ちょっとびっくり。typeはさすがに
付けないだろうと思っていたのですけれど。


   ##もっといい方法ありませんか?##


 しつこいのですが、こんな場合でも複数ファイルを処理しようと思ったら、

C:\KKKK>Wild -D "lsed \"p;d\" $f >$b" t*.txt
<< 環境変数対応 Wildcard 展開プログラム Ver.1.34 >>
          Copyright (c) 1996-98 by namazu & Si
DEBUG MODE:lsed "p;d" C:\KKKK\T1.TXT >T1
DEBUG MODE:lsed "p;d" C:\KKKK\T2.TXT >T2

 とやるのが吉なわけです。いいねぇ、ワイルド。m(__)m

【118】Re:LOGSORTW ver1.25.2
 文太  - 2008/10/07(火) 23:15 -

引用なし
パスワード
   mbsed "$s/$/\n/" file        #ファイル末に改行文字が2つあっても
                #別にいいじゃん、という大らかな人向け。
                #たぶん最速。

【120】Re:LOGSORTW ver1.25.2
 Si  - 2008/10/08(水) 1:13 -

引用なし
パスワード
   ▼文太さん:
> けっこう疲れてますよね、お互い。ここまでSiさんがつき合ってくれるとは思
>ってなかった。実はけっこうヘロヘロ。明日から(今日からですが)、新しい週
>の始まり! ゆっくりでいいですからね。変なバグ・レポートもかつて入ってい
>たわけですから。

これで一時休戦かと思わせながら、、

>aaaaa[EOF]
> な終端をもつファイルの最後に改行を加える方法は何がいいのかなぁ、と考え
>ていて、はまりました。Vzマクロ以外です。

と、文太さんのタフぶりには何と言っていいものやら ^^;

ハードディスクの中ををひっくり返してやっと sed を探し出して試してみました。

>>lsed "p;d" file    #logos版sed、この版以外だと深くはまっちゃいます。

これが通りましたからうちにあるのは logos版 のようです。

SED   Ver2.42l    Jun 17 1992
1992/06/17 11:00      25,108 sed.exe

> そっかあ、フィルタは一般にファイル末に改行がないならそのままにしておく
>ものなんですね。xtr で付かなかったのは、ちょっとびっくり。typeはさすがに
>付けないだろうと思っていたのですけれど。

xtr も引っ張り出して試してみました。文太さんなら既にご存じかと思いますが、

xtr -nn -nz -o=hoge.txt foo.txt

こんな感じですかね。これなら sed の方が簡潔で良いのかな?

昔々に「MS‐DOSテキストデータ料理学」とかいう本を買い込んで awk とか sed とか触っていた時期があったのですが、結局使いこなせないまま今日に至っています ^^;

【123】Re:LOGSORTW ver1.25.2
 文太  - 2008/10/08(水) 23:20 -

引用なし
パスワード
   Siさん

>> けっこう疲れてますよね、お互い。ここまでSiさんがつき合ってくれるとは思
>>ってなかった。実はけっこうヘロヘロ。
>
>これで一時休戦かと思わせながら、、
>
>>aaaaa[EOF]
>> な終端をもつファイルの最後に改行を加える方法は何がいいのか
>
>と、文太さんのタフぶりには何と言っていいものやら ^^;

 確かに完全に相手を油断させておいてというのを狙っているとしか思えん(爆)。
 なんで作者様を油断させる必要があるんだ??? ☆\(^^;)

 ふつう、「もう忘れちゃったよ」と冷たくいなされるところなのです。m(_B_)m
 優しいお言葉にすっかりよい気持ちになってしまって、それで連続・集中砲火
的発言の数々となっております。ほんとうにすいません。深謝です。そしてマリ
アナ海溝の深みから感謝、感謝であります。m(__)m

 とにかく、どうぞゆっくりと楽しまれてください。僕に振り回されないで、と。
m(__)m 何言っているのだか、ですね。


>ハードディスクの中ををひっくり返してやっと sed を探し出して試してみました。
>>>lsed "p;d" file    #logos版sed、この版以外だと深くはまっちゃいます。
>これが通りましたからうちにあるのは logos版 のようです。
>SED   Ver2.42l    Jun 17 1992
>1992/06/17 11:00      25,108 sed.exe

 はい、それは logos 版です。serow 版からの拡張で、serow さんがオリジナ
ルから落としてしまった、 少なくはない便利なところを回復させていますので
(エンバグさせてるかも、という作者の言葉にもかかわらず)、安定していて優
秀な sed です。たとえば、コマンドを羅列させる「;」(今回使用)、スクリプ
ト先頭の unix-like な「#n」、s/LHS/RHS/n の置換時の何個目指定フラグ「n」。
この3点だけでも、 僕には serow 版に固執する意味はなくなりました(気づい
たのは、とても遅かったのですが)。
 もし総合的に dos 用の sed ということになったら、vector にある

C:\>sed --version
GNU sed version 1.18 + multi-byte extension 1.03

 がGNU拡張をもっとも最近まで追っていて、参考書どおりになりそうです。
 32ビットになると、けっこう色々と深くて…。
 (僕、sedオタクなんです。大して使えやしないのですが)

> xtr も引っ張り出して試してみました。文太さんなら既にご存じかと思いますが、
> xtr -nn -nz -o=hoge.txt foo.txt

 いえいえ、知りませんでした。調べることも出来ずじまいでいました。m(__)m
 ちゃんとそういうオプションがあるんですね。

>  nn 〔初期値:nn-〕
>  入力ファイルが改行無しで終わっている場合でも出力ファイル
> は必ず改行を付けて終わるようにします。

>  nz 〔初期値:nz-〕(No ctrl-Z)
>  出力ファイルの最後に ^Z を付けません。(通常、テキスト
> ファイル出力の場合は最後に ^Z を付けるようになっています。)

 どっかのツールのどっかのドックで、そんな処理について触れてたな、と思っ
ていたのです。XTRで外れたと思っていたので、お教えいただけて「取れた小
骨」的に本当にすっきりしました。m(__)m

> 昔々に「MS‐DOSテキストデータ料理学」とかいう本を買い込んで awk とか sed
> とか触っていた時期があったのですが、結局使いこなせないまま今日に至っています ^^;

 僕も、それ持ってます。もっとも使えるところだけ使えばいい(いざとなると
お勉強が必要になり、けっこうイライラするのですが)と開き直ってますけれど。


 因みに、XTRには以下のような関数が用意されているそうで、もうCそのも
のみたい。logsortw のソースをみて、ああ、「Cって知らなくても読める」と
か誤って思ってしまいました。「あ、XTRの関数みたいだ」とも。とはいえ、
XTRの作者、村上さんは、正規表現を使えるところまでもっていけなかった、
ここが痛いですね。

@write
入出力
 write (str)指定文字列を出力する関数

@writeln
入出力
 writeln (str)指定文字列の後に改行を付加して出力する関数

@put
入出力
 put 行バッファへの出力関数

@get
入出力
 get ()1行入力。
 get (n)指定文字数入力。

@unget
入出力
 unget (str)指定文字列を次の入力の対象とする。

【124】Re:LOGSORTW ver1.25.2
 としき WEB  - 2008/10/09(木) 22:09 -

引用なし
パスワード
   ▼文太さん:

> どうでもいいメモです(すいません)。

どうでもいいレスをつけさせていただきます。
つまらんもので引きずって申し訳ない。>Siさん

>方法4
>>jgawk "{print}" file    #素直、素直

方法4’
>jgawk "1" file    #ひねくれ

方法6
#include <stdio.h>
int main(){int c;
while((c=getchar())!=EOF)putchar(c);
if(c!='\n' && c!='\r' && c!='\l')putchar('\n');
}
/* LSI-Cで動作確認済み */

何やってんだか。


> とやるのが吉なわけです。いいねぇ、ワイルド。m(__)m

いや、全く。


【125】Re:LOGSORTW ver1.25.2
 文太  - 2008/10/10(金) 18:02 -

引用なし
パスワード
   > /* LSI-Cで動作確認済み */

 ダウト!

【127】Re:LOGSORTW ver1.25.2
 としき WEB  - 2008/10/11(土) 12:53 -

引用なし
パスワード
   ▼文太さん:

> ダウト!

うあ〜、あと1枚だったのに〜!


まじめな話、敗因は、書き込む直前に

#include "mylib.h"

を削除してしまった事だと思います。
だよなぁ。ちょっと自信なし。
ということで、修正版。

#include <stdio.h>
int main(){int c;
while((c=getchar())!=EOF)putchar(c);
if(c!='\n' && c!=0x0d && c!=0x0a)putchar('\n');
}
/* LSI-Cで動作確認済み */

今度は大丈夫、だといいなぁ。

【128】Re:LOGSORTW ver1.25.2
 文太  - 2008/10/11(土) 13:28 -

引用なし
パスワード
   Siさん(変な展開で、すいません)
としきさん、ありがと。うふ。


C:\>lcc addtail.c
lld @link.i

C:\>command.com /cdir addtail.exe

ADDTAIL EXE   6319 08-10-11  13:15
    1 個      6319 バイトのファイルがあります.
          957803520 バイトが使用可能です.

C:\>type test.txt
aaaaaaaaaaaaa
bbbbbbbbbbbbbbb
C:\>addtail test.txt
^C

C:\>addtail <test.txt
aaaaaaaaaaaaa
bbbbbbbbbbbbbbb
                ;ココだよん\(^_^)/
C:\>type OK.txt
/* LSI-Cで動作確認済み */    ;the first ever compling of C program!!!

C:\>type addtail.c
#include <stdio.h>
int main(){int c;
while((c=getchar())!=EOF)putchar(c);
if(c!='\n' && c!=0x0d && c!=0x0a)putchar('\n')    ;ここがいけない
}            ;のは分かってたのだけど、#include <ctype.h>
            ;でも駄目だった。ありがとうございました。
            ;読めます、だいたい。m(__)m

【138】Re:LOGSORTW ver1.25.2
 Si  - 2008/10/19(日) 23:34 -

引用なし
パスワード
   ▼としきさん:
>if(c!='\n' && c!=0x0d && c!=0x0a)putchar('\n');

横から失礼します。

'\n' = 0x0a

じゃなかったでしたっけ?
茶々入れですみませんm(__)m

【139】Re:LOGSORTW ver1.25.2
 としき WEB  - 2008/10/20(月) 22:21 -

引用なし
パスワード
   ▼Siさん:

>'\n' = 0x0a
>じゃなかったでしたっけ?

そうかもしれません。
実はあのコード、何も資料を確認せずに記憶だけで書いたんですよ。
一応、LSI-CでコンパイルしてDOSで実行確認は取ったんですが、
確か、DOSとUNIXとMacで改行コードが違うという話があったなぁ、
と思い出しました。一応、ソースを載せる以上、どんな環境でも
動いてほしいけど、でも、わざわざ調べるのも面倒、ということで、
安全側に倒すという意味での妥協の産物ですね。

【140】Re:LOGSORTW ver1.25.2
 文太  - 2008/10/20(月) 22:32 -

引用なし
パスワード
    何だか(日頃の)ご恩を仇でかえすみたいなのですが。

--------------------------------------
C:\>command.com /ctype t1
with \n

C:\>command.com /ctype t2
without \n
C:\>Lsed "n" t1
with \n

C:\>Lsed "n" t2
without \n

C:\>addtail <t1
with \n


C:\>addtail <t2
without \n

C:\>
--------------------------------------
 確かに何かバグってるみたいですね。やっぱ読めないから直せないのですが。
 仕様は「ファイルの最終行が改行文字で終わっていない場合に、改行文字を付
加する」です。どうでもいいことですいません。性格、悪いなぁ。(^^;ゞ
m(__)m

【142】Re:LOGSORTW ver1.25.2
 としき WEB  - 2008/10/20(月) 23:42 -

引用なし
パスワード
   > 何だか(日頃の)ご恩を仇でかえすみたいなのですが。

それは全然問題ないのですが。

> 確かに何かバグってるみたいですね。やっぱ読めないから直せないのですが。

こちらの方は大問題です。
というか、私が実験した時はそうはならなかったはず。
いや、そうならなかったような気がする。
そうならなかったんじゃないかなぁ。
何か見間違えたのかなぁ。

とりあえず、あとでもう一度実験してみます。
何を失敗したのかなぁ。
まさか、EOF?

【143】Re:LOGSORTW ver1.25.2
 文太  - 2008/10/21(火) 13:20 -

引用なし
パスワード
    少なくともEOFが原因ではないようです。Ez-な人ですので。
 EOFって、1Aなんですね。

Ez-            ;EOF コードの付加

C:\>dump t1
00000000 77 69 74 68 20 5C 6E 0D-0A           |with \n..

【146】EOF?
 文太  - 2008/10/21(火) 14:26 -

引用なし
パスワード
   > まさか、EOF?
> while((c=getchar())!=EOF)putchar(c);

 もしかして、EOFがファイルにあることが前提なのかな?
 しかし、これって、1文字ゲットしては1文字出力し、ってやってるわけですか?

【147】Re:LOGSORTW ver1.25.2
 としき WEB  - 2008/10/21(火) 20:48 -

引用なし
パスワード
   > 少なくともEOFが原因ではないようです。

違います。私のソースコードの方が間違っている、ということです。
昨夜は眠かったので正しいソースコートが提示できませんでしたが、
元々のコード、EOFが来たらループから脱出、となっているのに、
脱出直後に、来たのが「EOFではない」特定のコードであったら、
という形になっています。これでは正しく動くわけがありません。
ということで、さらに修正版。

#include <stdio.h>
int main(){
int c,c2;
while((c=getchar())!=EOF){
putchar(c);
c2=c;
}
if(c2!='\n' && c2!=0x0d && c2!=0x0a)putchar('\n');
}

一応、今回もチェックしてOKである事の確認は取ったのですが、
前回もチェックOKを出したのに実はNGだったわけで。
また夢を見ているだけかもしれません。

【148】Re:LOGSORTW ver1.25.2
 文太  - 2008/10/22(水) 10:58 -

引用なし
パスワード
   としきさん

------------------------------
C:\LSI>lcc ADDTAIL2.C
lld @link.i

C:\LSI>addtail2 <t1
with \n

C:\LSI>addtail2 <t2
without \n

------------------------------
 めでたしめでたし。

【150】ファイル末改行付加
 文太  - 2008/10/22(水) 21:18 -

引用なし
パスワード
    しつこいのですが。たぶんこれが最短。少なくともsedを使うなら。

-------------------
C:\XYZ>command.com /ctype abc
without \n
C:\XYZ>lsed "" abc   #logos版
without \n

C:\XYZ>oldsed "" abc  #serow版(たぶん他のsedでは駄目)
without \n       #bugともfeatureとも言える仕様です。

C:\XYZ>
-------------------

3 / 13 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
14,004
(SS)C-BOARD v3.8 is Free