Как я могу создать строку формата fscanf, чтобы принимать пробелы и токены (,) - PullRequest
0 голосов
/ 19 мая 2010

У меня есть некоторый код анализа (myprog), который всасывает данные, используя следующее:

 if(5 == fscanf(in, "%s%lf%f%f%f", tag, & sec, & tgt, & s1, & s2))

, который работает просто отлично. Но в ситуации, когда у меня есть файлы данных, разделенные запятыми, я сейчас делаю что-то вроде:

 sed 's/,/ /g' data | myprog

Можно ли изменить строку формата в функции fscanf(), чтобы принять оба формата разделения?

Ответы [ 2 ]

1 голос
/ 19 мая 2010
fscanf(in, "%[^, ]%*[, ]%lf%*[, ]%f%*[, ]%f%*[, ]%f", tag, &sec, &tgt, &s1, &s2)

Должен работать?

0 голосов
/ 19 мая 2010

Что по этому поводу:

char tmp; fscanf (in, "% s% c% lf% c% f% c% f% c% f", тег, & tmp, & sec, & tmp, & tgt, & tmp, & s1, & tmp, & s2)

Если вам не важно, какой отдельный символ разделяет ваши значения, просто прочитайте его и сохраните в одноразовой переменной.

...