0

私は Ubuntu 10.4 を使用しており、2 つの (長い) C プログラムがあります。1 つは XDR を使用してファイルを書き込み、もう 1 つはこのファイルを入力として使用します。ただし、2 番目のプログラムは、書き込まれたファイルを読み取ることができません。すべてが完全に問題ないように見えますが、機能しません。具体的には、ここに追加された最後の行で失敗し、エラー メッセージ xdr_string() が表示されます。これは、入力ファイルの最初の行を読み取れないことを示しています。明らかなエラーは見られません。入力ファイルが書き出され、コンテンツがあり、stings -a -n 2 "inputfile" を使用して正しい文字列を確認できます。何がうまくいかないのか誰にも分かりますか?

プログラム 1 (ライター) の関連部分:

/**
   * create compressed XDR output stream
   */

  output_file=open_write_pipe(output_filename);
  xdrstdio_create(&xdrs, output_file, XDR_ENCODE);

  /**
   * print material name
   */

  if( xdr_string(&xdrs, &name, _POSIX_NAME_MAX) == FALSE )
    xdr_err("xdr_string()");

プログラム 2 (リーダー) の関連部分:

  /**
   * open data file
   */

  input_file=open_data_file(input_filename, "r");
  if( input_file == NULL ){
    ERROR(input_filename);
    exit(EXIT_FAILURE);
  }

  /**
   * create input XDR stream
   */

  xdrstdio_create(&xdrs, input_file, XDR_DECODE);

  /**
   * read material name
   */

  if(xdr_string(&xdrs, &name, _POSIX_NAME_MAX) == FALSE)
    XDR_ERR("xdr_string()");
4

1 に答える 1

0

open_write_pipe方法や動作はわかりませんがopen_data_file、バイナリモードでファイルの書き込み/読み取りを試みましたか? これはWindows 用の Portable XDRの場合です。確かに、サンプルは整数用ですが、文字列でも同じはずです。

于 2012-10-28T22:56:37.973 に答える