HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2018
1011
sinファイルの終わり3解決


sin

リンク

2018/10/11(Thu) 16:27:25|NO.85551

test.txtファイルの内容が

あい
うえお

とします。
一文字ずつ読み込んでその文字が「EOF」なら終了としたいのですが、
どの様にしたら良いのでしょうか?



この記事に返信する


あらや

リンク

2018/10/11(Thu) 18:45:32|NO.85552

文字コードが『0』とか
制御文字コード『0x1A』のEOFとかではなく

単純に文字として

あい
うえお
EOF
かきくけこ

こんな感じのテキストデータがあるという意味ですか?


だとするならばこんな感じでしょうか。

// 一文字ずつ読む場合(変数textにテキストデータが入っているとします) w1 = peek(text, idx); // idxは一文字ずつ読むときのインデックス値 // 『E』だった場合 if( w1 == 'E' ) { // 『E』の次の文字2つ取得 w2 = peek(text, idx + 1); w3 = peek(text, idx + 2); // 取得した2文字が『O』『F』だった場合 if( (w2 == 'O') && (w3 == 'F') ) { // 『EOF』に一致したとみなして終了する end; } }

大文字、小文字は区別しないなら条件に小文字も追加すれば可能です。



とあるプログラマ

リンク

2018/10/11(Thu) 21:27:06|NO.85553

あらやさんとは逆にファイルの末端("EOF"という文字列ではない)の場合はNULLがあります。
この場合は1バイトずつ読み込んだとき値がNULL(0)ならEOFです。


dialog "txt",16 if stat=0 : end exist refstr size=strsize+1 //NULL文字(EOF)を読みたいなら1足す sdim buf,size //ファイルサイズ分の変数を確保 sdim out,size //結果も同じく notesel buf noteload refstr repeat size //ファイルサイズ分だけ繰り返す data=peek(buf,cnt) //1バイトずつ読み込む if data=0 : out+="[EOF]" :break //一応NULL文字だったら[EOF]を最後に追加 poke out,cnt,data //読み込んでることを確認するために結果を作る loop mes out //結果表示 stop



sin

リンク

2018/10/11(Thu) 22:56:04|NO.85555

ありがとうございます。
出来ました。



ONION software Copyright 1997-2021(c) All rights reserved.