В теме 2 сообщения

Гость stibs
Новичок

ПАРУ СЛОВ О SSCANF...

sscanf - разделитель данных с параметром. 

Например, у нас есть данные вида: 2|3|4. Как вы заметили, разделителем между цифрами (2, 3, 4) является знак '|'. Допустим, эти данные хранятся у нас в базе данных. Как же их правильно и не сложно извлечь? Вот эту задачу и решает sscanf. 

ИСПОЛЬЗОВАНИЕ, ПАРАМЕТРЫ. 

Как уже выше было сказано, sscanf можно использовать для сохранения в бд. Можно использовать также в качестве разделителя в командах. С теорией в этой теме покончено, теперь перейдем к практике. 

 


Общий вид функции: 

sscanf(где_разделяем, "p<разделитель>идентификатор_параметра(-ов)", исходные_аргументы); 

Ну, а теперь подробней: 

  • Где разделяем: строка, из которой извлекаем данные, которые были сохранены в нее с использованием какого-нибудь разделителя. 
  • Разделитель: собственно, сам знак, который разделяет символы между собой (подробнее в начале темы). 
  • Идентификатор параметра(-ов): тип данных, который использован в строке: 
    s - string - строчный тип (буквы и т.д.); 
    i - integer - целочисленный тип (только цифры); 
    f - float - число с плавающей точкой (пример: 1,10). 
  • Исходные аргументы: аргументы (переменные), в которые будут записаны уже разделенные и структурированные данные. 

ИНФОРМАЦИЯ: 
При использования идентификатора параметра s (строчный тип) обязательно к указанию размер строки, который будет извлекаться. 
Например: 
sscanf(string, "s[20]ii", string2, number1, number2);

Теперь можно разобрать пару примерчиков для более глубокого осознания. 

Задача: У нас есть переменная, скажем, numbers. Данная переменная содержит в себе два числа, которые нам нужно выделить из нее. В качестве разделителя будет использована запятая. 

Решение: 

new number[2]; // создадим массивную переменную под два числа. 
new numbers[4] = "1,2"; // запишем в строку numbers два числа: 1 и 2 через запятую
sscanf(numbers, "p<,>dd", number[0], number[1]); // с помощью sscanf разделим каждое число в отдельную перменную
printf("%d + %d = %d", number[0]/*записываем первое число*/, number[1]/*записываем второе число*/, number[0]+number[1]/*записываем их сумму*/); // выведем их в консоль в качестве сложения

Теперь давайте возьмем что-нибудь посложнее. 

Задача: У нас есть переменная carnumbers. Она хранит в себе значение номера и региона, разделенного знаком "|". Причем, цифры в номере разделены пробелом. 

Решение: 

new carnumbers[17] = "A 1 2 3 A A | 52";
new letter[3]; // создаем массив для трех букв
new numbers[5]; // создаем массив для 5 цифр (из исходного номера - первая строка). 
sscanf(carnumbers, "p< >sdddss<|>dd", letter[0], number[0], number[1], number[2], letter[1], letter[2], number[3], number[4]); 

Из решения видно, что буква A попадет в переменную letter[0], цифра 1 в переменную number[0] ну и так далее по аналогии. 


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

На этом урок окончен, всем спасибо. 

Автор: @stibs

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Бот
Великий Гуру

АВТОМАТИЧЕСКИ СФОРМИРОВАННОЕ СООБЩЕНИЕ:

Данная тема была перемещена модерацией или администрацией портала PAWNO-RUS.RU! 

Перемещена из: "Скриптинг PAWN > Готовые решения"

Перемещена в: "Скриптинг PAWN > Уроки"

 

С уважением, ваш Бот! 

Если вы НЕ согласны с переносом данной темы в раздел "Скриптинг PAWN > Уроки", пожалуйтесь на это сообщение в жалобе указав причины вашего недовольства. Спасибо. 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!


Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.


Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

  • Похожий контент

    • Helados
      От Helados
      Короче, мы протестировали наш GTA на другом хостинге — голосовой чат там работает, всё включается нормально. Также проверили на другом хостинге с нашим игровым модом — voice chat тоже работает.
      Но на нашем личном хостинге, который мы купили на OVH и установили панель, не получается запустить голосовой чат. Похоже, проблема связана с портами. После перезапуска сервер почему-то случайным образом выбирает порты сам и мы не можем это исправить.
      Если кто-то знает человека, который может помочь разобраться с этой проблемой, буду благодарен.
    • тимормо
      От тимормо
      Копия Diamond RP (основа State 99)
      Скачать файл Мод DIAMOND RP (ver. 1.0)
      Основа: State 99
      Автор мода: #TomSnow
      Вопросы/Баги: https://vk.com/etalon_dev
       
      Приветствую всех! На связи #TomSnow
       
      Я принял решение начать поэтапную разработку и восстановление легендарного мода Diamond RolePlay образца 2015–2017 годов, взяв за основу мод State 99 (оригинальная основа DRP).
       
      Каждая новая версия разрабатываемого мода будет публиковаться в открытом доступе для всех участников и подписчиков сообщества (https://vk.com/etalon_dev). Это позволит вам не только следить за процессом разработки, но и принимать непосредственное участие в развитии проекта: тестировать обновления, находить баги, сообщать о недоработках и помогать делать мод максимально качественным и стабильным.
       
      Если вам интересна данная тематика и вы хотите наблюдать за ходом разработки, подписывайтесь на нашу группу ВКонтакте (https://vk.com/etalon_dev) и ожидайте публикацию версий проекта.
       
      Спасибо всем за поддержку! Впереди нас ждёт много интересной работы и возвращение атмосферы классического Diamond RolePlay. 
       
      Информация о моде:
       
      Версия MySQL R 39-6
      Античит Nex-AC (Доработанный)
      Стример Streamer Plugin v2.9.4
      Командный процессор Pawn CMD
       
      Список обновлений мода
       
       
      Добавил тимормо Добавлено 07/15/26 Категория Моды Автор #TomSnow  
    • тимормо
      От тимормо
      Мод DIAMOND RP (ver. 1.0)
      Основа: State 99
      Автор мода: #TomSnow
      Вопросы/Баги: https://vk.com/etalon_dev
       
      Приветствую всех! На связи #TomSnow
       
      Я принял решение начать поэтапную разработку и восстановление легендарного мода Diamond RolePlay образца 2015–2017 годов, взяв за основу мод State 99 (оригинальная основа DRP).
       
      Каждая новая версия разрабатываемого мода будет публиковаться в открытом доступе для всех участников и подписчиков сообщества (https://vk.com/etalon_dev). Это позволит вам не только следить за процессом разработки, но и принимать непосредственное участие в развитии проекта: тестировать обновления, находить баги, сообщать о недоработках и помогать делать мод максимально качественным и стабильным.
       
      Если вам интересна данная тематика и вы хотите наблюдать за ходом разработки, подписывайтесь на нашу группу ВКонтакте (https://vk.com/etalon_dev) и ожидайте публикацию версий проекта.
       
      Спасибо всем за поддержку! Впереди нас ждёт много интересной работы и возвращение атмосферы классического Diamond RolePlay. 
       
      Информация о моде:
       
      Версия MySQL R 39-6
      Античит Nex-AC (Доработанный)
      Стример Streamer Plugin v2.9.4
      Командный процессор Pawn CMD
       
      Список обновлений мода
       
       
    • x4reo
      От x4reo
      EPOCH ROLE PLAY | ВОЗВРАЩЕНИЕ В 90-Е Создаем атмосферный Full RP проект без «фарма» и лишней «дичи»     О ПРОЕКТЕ Epoch Role Play — это площадка для тех, кто ценит качество, а не статистику. Мы строим живой мир, где каждое действие имеет последствия, а экономика строится на социальном взаимодействии.   КОГО МЫ ИЩЕМ? • Lead Developer (Pawn/C#/JS): Создание ядра мода, БД, оптимизация. • Mapper/Level Designer: Создание аутентичных интерьеров 90-х. • Game Designer: Проработка ролевых правил и сценариев. • SMM-менеджер: Ведение соцсетей, создание контента. • Дизайнер: Оформление медиа и UI проекта. • Discord-архитектор: Настройка каналов и безопасности. • Web-разработчик: Сайт и форум проекта. • Bot-developer (VK/TG): Безопасность: 2FA, привязка аккаунтов.   НАШИ УСЛОВИЯ 1. Энтузиазм: Проект стартует без бюджета. Мы ищем единомышленников. 2. Соавторство: Каждый участник — полноценный совладелец проекта. 3. Партнерство: Вся прибыль от монетизации распределяется пропорционально вкладу.     КОНТАКТЫ ДЛЯ СВЯЗИ Telegram: x4reoo