Чтение специально отформатированной строки - PullRequest
0 голосов
/ 13 февраля 2019

Я пытаюсь прочитать файл, содержащий строки строк в следующем формате:

"string";"string";"string";"string";"string"

Как мне прочитать их, используя функции, совместимые с Windows и Linux?

Длинакаждой строки неизвестно.

Я пытался использовать fscanf следующим образом:

fscanf(fp, "\"%s\";\"%s\";\"%s\";\"%s\";\"%s\"\n");

Но первая строка заняла всю строку.

Ответы [ 2 ]

0 голосов
/ 13 февраля 2019

Если вы действительно хотите использовать fscanf, вы можете использовать строку формата, подобную этой:

fscanf(fp, "\"%[^\"]\";\"%[^\"]\";\"%[^\"]\";\"%[^\"]\";\"%[^\"]\"\n", ...);

Для получения более подробной информации читайте спецификатор преобразования [set] в справочных документах для fscanf.

Обратите внимание, что не будет работать со встроенными '"' символами в строках.

Этотакже не оставляет никакой гибкости (например, дополнительные пробелы вокруг точек с запятой, необязательные кавычки и т.приходит на ум например.).Также исх. ПМГ ответ о том, как свернуть свой собственный.

0 голосов
/ 13 февраля 2019

вот вам псевдокод

loop
    getchar; if not a quote exit with error
    loop
        getchar; mind EOF
        if not a quote, add to string
        if a quote exit inner loop
    use string
    getchar; if not semicolon exit with error unless EOF
...