fscanf со строкой и длинным

Я пытаюсь разобрать файл, написанный другой функцией, с помощью этого fprintf:

fprintf(file, "DS;%s;%ld;%ld;%u\n", ds->name, ds->start, ds->period, ds->size)

Я использую этот fscanf:

fscanf(file, "DS;%[^;$]s;%ld;%ld;%u", file_name, &file_start, &file_period, &file_size)

имя_файла читается без проблем. но file_start, file_period и file_size всегда равны 0, даже если это не ожидается.

Например, строка:

DS;failures;1363978800;600;144

Разбирается так:

  • имя_файла: сбои (в порядке)
  • file_start: 0 (ko)
  • file_period: 0 (ко)
  • размер_файла: 0 (ko)

Что я делаю не так?


person Fabio A. Mazzarino    schedule 25.03.2013    source источник
comment
Каково возвращаемое значение? Это скажет вам, сколько конверсий он сделал, если это не 4, то вы не совсем правы, говоря, что поля анализируются до 0, они вообще не анализируются (не изменяются на fscanf()).   -  person unwind    schedule 25.03.2013
comment
не знаю точно возвращаемое значение. Но он больше 0, потому что я проверяю scanf на наличие ошибок, проверяя его результат.   -  person Fabio A. Mazzarino    schedule 25.03.2013


Ответы (1)


замените формат строки "%[^;$]s" на этот %[^;$] ==> удалите s, потому что [] замените s, поэтому для s больше нет необходимости

person MOHAMED    schedule 25.03.2013