Форум Pawn-Wiki.Ru - Воплоти мечту в реальность!: Деление Строки На Ключ И Значение - Форум Pawn-Wiki.Ru - Воплоти мечту в реальность!

Перейти к содержимому

Страница 1 из 1
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

Деление Строки На Ключ И Значение Оценка: -----

#1
Пользователь онлайн   Romzes 

  • © Pawn-Wiki.Ru
  • Вставить ник
  • Цитировать
  • Раскрыть информацию
Данная написанная мной функция позволяет делить строку на две части: ключ и значение.

Вот сама функция:

stock KeyStringDiv(const string[],&outkey[],&outvalue[],delimiter)
{
    for(new i; string[i] != '\0'; i++)
    {
        if(string[i] == delimiter)
        {
            new str = strlen(string);
            strmid(outkey,string,0,i,i);
            strmid(outvalue,string,i+1,str,str);

            return 1;
        }
    }

    return 0;
}


Лучше конечно использовать с дефайнами. Объясняю, что каждый из них значит: MAX_STROKE_LENGTH - максимальная длина всей строки (string), MAX_KEY_LENGTH - максимальная длина ключа, MAX_VALUE_LENGTH - максимальная длина значения.

Теперь объясню аргументы.

string[] - сюда писать всю вашу строку, с ключом и значением
outkey[] - место для переменной, в которую запишется нарезанный ключ
outvalue[] - место для переменной, в которую запишется нарезанное значение
delimiter - по какому символу делить. Пишется в формате '=' , где равно - любой символ.

Вот мой скрипт-пример:

new File:rdfile = fopen("aaa.ini",io_read),string[512],outkey[256],outvalue[256];

fread(rdfile,string);
	
new success = KeyStringDiv(string,outkey,outvalue,'=');
    
if(success == 0) { print("В строке не найден delimiter"); return 1; }
    
printf("key: %s | value: %s",outkey,outvalue);



при записи в файл такой строки:

lol=wut?


в консоль выдало:

key: lol | value: wut?


И еще одно свойство: если ключ в строке не найден, функция возвращает ноль. Поэтому в моем тест-скрипте при не вводе в файл символа '=' в консоль выводило следующий текст:

В строке не найден delimiter


Удачного пользования.
Автор: REALman
0

Поделиться темой:


Страница 1 из 1
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

1 человек читают эту тему
0 пользователей, 1 гостей, 0 скрытых пользователей