Войти

Показать полную графическую версию : И опять SSCANF


evpu
28-06-2015, 09:55
Всем добрый день!

Подскажите пожалуйста ресурс, по поводу вышеуказанной функции. Мне требуется понять все тонкости строки форматирования, и научиться художественно ими пользоваться)

А фактических задач 2.

1. Хочу научиться раскладывать GET-запрос на С.
Т.е я делаю accept на требуемый TCP порт, и ловлю данные в массив. Мне требуется например, при получении строки вида:

GET /core.php?account=88899911&command=check&txn_id=208750985025890

извлекать то, что после вопросительного знака, и соответственно далее раскладывать строку на переменные и их значения.
Очевидно, что это элементарно делается на РНР, но я хочу в этой задаче смигрировать с РНР на С, т.к последний работает где-то в 50 раз быстрей!

Очевидно, что никакого файла core.php фактически нет, такой вид имеет строка запроса.

2. Как я писал ранее, хотелось бы хранить настройки во внешнем текстовом файле.
Пока у меня получилось хранить значения настроек через разделитель (пробел). А хотелось бы что-то типа:
<param 1>1</param 1><param 2>2</param 2><param 3>3</param 3>...

K.A.V.
28-06-2015, 10:42
Подскажите пожалуйста ресурс, по поводу вышеуказанной функции »
Так это...MSDN, не? sscanf (https://msdn.microsoft.com/ru-ru/library/zkx076cy.aspx), Символы поля типа scanf (https://msdn.microsoft.com/ru-ru/library/6ttkkkhh.aspx)

1. Хочу научиться раскладывать GET-запрос на С. »
А как вам sscanf в этом поможет? :)

Думаю, вам нужно пройтись циклом по символам, и:
1. Если символ ? или &, то значит делаем вывод, что далее будет начало имени параметра до символа = или до конца строки
2. Если символ =, то это окончание имени параметра, далее идет значение параметра до & или до конца строки

Можете ещё почитать про функцию strtok, вдруг пригодится...

2. Как я писал ранее, хотелось бы хранить настройки во внешнем текстовом файле.
Пока у меня получилось хранить значения настроек через разделитель (пробел). А хотелось бы что-то типа:
<param 1>1</param 1><param 2>2</param 2><param 3>3</param 3>... »
А в чем проблема? Вы же умеете писать в файл...Так подставьте в строку при записи нужные значения...
Не совсем понятна суть проблемы

evpu
28-06-2015, 11:27
По strtok понял, почитаю...
Начиная работать с SSCANF я грешным делом предположил, что можно одной строкой задать такой же форматный ввод как SPRINTFом форматный вывод... На деле же все иначе.

Да, писать в конфиг я таким образом могу. А вот с форматным считыванием пока затруднения. Исходную задачу выполнил, настройки демона находятся во внешнем файле. Теперь еще красиво и юзабельно надо сделать.




© OSzone.net 2001-2012