Top Page [◀◀]  2   3   4   5   6   7   8   9   ... [▶▶Last Page

サンプル・プログラムが間違えてないか?

 「RX ファミリ C/C++コンパイラ、アセンブラ、最適化リンケージエディタ コンパイラパッケージ V.1.01 ユーザーズマニュアル」
に書いてある、次のプログラムを調べています。
 エンターキーを押すとリターンするのかと思ったけど、3番目の変数で設定した「読み込み文字数」になるまでリターンしないのかな。


/******************************************************************************/
/* read:データの読み込み                                                    */
/* リターン値: 実際に読み込んだ文字数 (成功)                               */
/* -1 (失敗)                                                                */
/******************************************************************************/
long read(long fileno, /* ファイル番号 */
unsigned char *buf, /* 転送先バッファアドレス */
long count) /* 読み込み文字数 */
{
unsigned long i;
/* ファイル名に従ってモードをチェックし、一文字づつ入力してバッファに格納 */
if (flmod[fileno]&O_RDONLY || flmod[fileno]&O_RDWR) {
    for (i=count;i>0;i--) {
        *buf=charget();
        if (*buf==CR) { /* 改行文字の置き換え */
            *buf=LF;
            }
        buf++;
        }
    return count;
    }
else {
    return -1;
    }
}

  • こんにちは

    >>
    if (*buf==CR) { /* 改行文字の置き換え */
    *buf=LF;
    }
    <<
    読み込んだ文字がCRだったらLFに置き換えているだけでcountの回数だけ読み続けるようですね。
    これはこれで間違いではないと思いますが…
  • In reply to じま:

    じまさん、書き込み有難う。
     
     charget() を使っているから、コンソールからの入力だと思います。
     「リターン値: 実際に読み込んだ文字数 (成功) 」となっているから、エンターキーを押すまでの文字数だと考えています。
     
     ハード・ディスクのセクターを読むならデータ数は一定でも処理できます。
     そのソフトを流用したのではないかと考えています。

     他のCPUではどうなっているのかルネサスの資料を調べたのですが見つかりません。
     H8とRXは同じようなプログラムでした。これらは同じ系統なので、コピーで作っているのかも知れないから参考にならない。
  • In reply to リカルド:

    こんにちは

    > ハード・ディスクのセクターを読むならデータ数は一定でも処理できます。
    > そのソフトを流用したのではないかと考えています。
    「/* ファイル名に従って…」とあるので、そうなのかもしれませんね。。。
    エンターが押されたところで入力終わりにするには、
    >>
    if (*buf==CR) { /* 改行文字の置き換え */
    *buf=LF;
    return count; /*追加*/
    }
    <<
    でいいのかな?
    マニュアル掲載のサンプルはそのままでは使えないと思っておいた方がいいってことでしょうかね。。。
  • In reply to じま:

    書き込み有難う御座います。
    次のようにしました。

    if (*buf == CR) {*buf = LF} ; // CR を LF に置き換える
    if (*buf == LF) // CR または LF 入力で終了
    {return count - i ; } ;   // CR,LF を読み込んだ文字数に数えない
           
    >マニュアル掲載のサンプルはそのままでは使えないと思っておいた方がいいってことでしょうかね。。。

     NEC系や三菱系で同じようなプログラムがあれば、比較して参考になるんですけどね。
     ICのサンプル回路も間違えているのが有ります。

Top Page [◀◀]  2   3   4   5   6   7   8   9   ... [▶▶Last Page