我正在使用Ubuntu 10.4并且有两个(长)C程序,一个使用XDR写入文件,另一个使用此文件作为输入。但是,第二个程序无法读入写入的文件。一切看起来都很好,它只是不起作用。更有意思的是,它在最后一行添加了错误消息xdr_string(),这表示它无法在输入文件的第一行读取。我没有看到任何明显的错误。写入输入文件,有内容,我可以使用sting -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()");
答案 0 :(得分:0)
我不知道open_write_pipe
或open_data_file
是如何工作的,但您是否尝试过以二进制模式写入/读取文件?这是Portable XDR for Windows的情况。不可否认,样本是针对整数的,但对于字符串应该是相同的。