Распарсить txt файл и получить текст в фигурных скобках - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Есть текстовый файл вида:
#This configuration file was written by: org.eclipse.equinox.internal.frameworkadmin.equinox.EquinoxFwConfigFileParser
#Thu Jun 12 03:28:49 EDT 2014
/*
org.eclipse.update.reconcile=false
eclipse.p2.profile=epp.package.cpp
osgi.instance.area.default=@user.home/workspace
osgi.framework=file\:plugins/org.eclipse.osgi_3.10.0.v20140606-1445.jar
equinox.use.ds=true
eclipse.buildId=4.4.0.I20140606-1215
 */
const int BL = 365;
const real32_T B[365] = {
  -8.65677805e-007,-6.129384928e-007,-1.283507061e-007,6.594647743e-007,1.664639512e-006,
  2.537618002e-006,2.717235702e-006,1.664022989e-006,-8.035377164e-007,-4.227551926e-006,
  -7.457241736e-006,-8.928994248e-006,-7.250429007e-006,-1.905289537e-006,
  6.21045092e-006,1.471245287e-005,2.027619485e-005,1.974537372e-005,1.148136107e-005,
  -3.545642357e-006,-2.143744496e-005,-3.61411112e-005,-4.126860949e-005
};
Как мне вырезать только текст который заключен в фигурные кавычки? Только это:
  -8.65677805e-007,-6.129384928e-007,-1.283507061e-007,6.594647743e-007,1.664639512e-006,
  2.537618002e-006,2.717235702e-006,1.664022989e-006,-8.035377164e-007,-4.227551926e-006,
  -7.457241736e-006,-8.928994248e-006,-7.250429007e-006,-1.905289537e-006,
  6.21045092e-006,1.471245287e-005,2.027619485e-005,1.974537372e-005,1.148136107e-005,
  -3.545642357e-006,-2.143744496e-005,-3.61411112e-005,-4.126860949e-005
Можно обрезать весь текст до символа '{' и закончить на символе '}'. Помогите!

Решение задачи: «Распарсить txt файл и получить текст в фигурных скобках»

textual
Листинг программы
#include <stdio.h>
#include <string.h>
 
static const char pszText[] =
"\
#This configuration file was written by: org.eclipse.equinox.internal.frameworkadmin.equinox.EquinoxFwConfigFileParser\
#Thu Jun 12 03:28:49 EDT 2014\
/*\
org.eclipse.update.reconcile=false\
eclipse.p2.profile=epp.package.cpp\
osgi.instance.area.default=@user.home/workspace\
osgi.framework=file\\:plugins/org.eclipse.osgi_3.10.0.v20140606-1445.jar\
equinox.use.ds=true\
eclipse.buildId=4.4.0.I20140606-1215\
 */\
const int BL = 365;\
const real32_T B[365] = {\
  -8.65677805e-007,-6.129384928e-007,-1.283507061e-007,6.594647743e-007,1.664639512e-006,\
  2.537618002e-006,2.717235702e-006,1.664022989e-006,-8.035377164e-007,-4.227551926e-006,\
  -7.457241736e-006,-8.928994248e-006,-7.250429007e-006,-1.905289537e-006,\
  6.21045092e-006,1.471245287e-005,2.027619485e-005,1.974537372e-005,1.148136107e-005,\
  -3.545642357e-006,-2.143744496e-005,-3.61411112e-005,-4.126860949e-005\
};\
";
 
int main(int argc,char** argv)
{
   char*    pData = (char*)calloc(strlen(pszText) + 1,1);
 
   if (pData)
   {
      strcpy(pData,pszText);
 
      char*    pBegin = strchr(pData,'{');
      char*    pEnd   = strchr(pData,'}');
 
      if (pBegin && pEnd && (pEnd > pBegin))
      {
         *pEnd = 0;
 
         printf("%s\n",pBegin + 1);
      }
 
      free(pData);
   }
 
   return 0;
}

Объяснение кода листинга программы

  1. В коде представлен текст, написанный на языке C.
  2. Он содержит исходные данные в виде строки pszText, которая представляет собой содержимое текстового файла.
  3. Данные включают информацию о конфигурации, такую как идентификатор сборки, имя профиля, область памяти по умолчанию и т.д.
  4. Также в данных присутствуют значения, представленные в виде массива B[365].
  5. Значения массива B представляют собой числа с плавающей точкой, которые, вероятно, используются для представления временных меток.
  6. В функции main выделена память для хранения содержимого pszText с помощью функции calloc.
  7. Содержимое pszText копируется в выделенную память с помощью функции strcpy.
  8. Затем в функции main ищутся символы `{' и '}', которые обозначают начало и конец блока текста, который нужно распечатать.
  9. Если символы найдены и находятся в правильном порядке, то символ } заменяется на ноль, чтобы отделить блок текста.
  10. Затем распечатывается содержимое между символами {' и '}', начиная с первого символа после{'`.
  11. В конце функции main освобождается выделенная память с помощью функции free.
  12. Функция main возвращает значение 0, что означает успешное выполнение программы.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4.143 из 5
Похожие ответы