Проблема чтения в файле, написанном с помощью xdr с помощью c - PullRequest
0 голосов
/ 01 марта 2011

Я использую Ubuntu 10.4 и у меня две (длинные) программы на Си: одна пишет файл с использованием 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()");

1 Ответ

0 голосов
/ 29 октября 2012

Я не знаю, как работает open_write_pipe или open_data_file, но вы пытались записать / прочитать файл в двоичном режиме?Так было в случае Portable XDR для Windows .Следует признать, что образец для целых чисел, но он должен быть одинаковым для строк.

...