Функция позволяет делить строку на две части: ключ и значение.
Код
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);
При записи в файл такой строки:
В консоль выдало:
Цитата
key: lol | value: wut?
И еще одно свойство: если ключ в строке не найден, функция возвращает ноль. Поэтому в моем тест-скрипте при не вводе в файл символа '=' в консоль выводило следующий текст:
Цитата
В строке не найден delimiter
Автор: REALman