0

我正在使用 Ubuntu 10.4 并有两个(长)C 程序,一个使用 XDR 写入文件,另一个使用该文件作为输入。但是,第二个程序无法读取写入的文件。一切看起来都很好,只是不起作用。更特别的是,它在此处添加的最后一行失败并带有错误消息 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_pipeopen_data_file工作,但您是否尝试过以二进制模式写入/读取文件?适用于 Windows的 Portable XDR 就是这种情况。诚然,该示例是针对整数的,但对于字符串应该是相同的。

于 2012-10-28T22:56:37.973 回答