【问题标题】:Problem reading in file written with xdr using c使用c读取用xdr编写的文件时出现问题
【发布时间】:2012-10-29 06:56:37
【问题描述】:

我正在使用 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()");

【问题讨论】:

  • 什么是“一切看起来都很好,只是不起作用。”意思是?什么看起来不错,到底什么不起作用?你能单步调试代码,看看哪里出错了吗?
  • 在此处添加的最后一行失败,并显示错误消息 xdr_string(),表示无法读取输入文件的第一行。一切看起来都很好,我的意思是我没有看到任何明显的错误。输入文件被写出,有内容,我可以使用 stings -a -n 2 "inputfile" 看到正确的字符串。

标签: c xdr


【解决方案1】:

我不知道open_write_pipeopen_data_file 是如何工作的,但是您是否尝试过以二进制模式写入/读取文件? Portable XDR for Windows 就是这种情况。诚然,示例是针对整数的,但对于字符串应该是相同的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-09
    相关资源
    最近更新 更多