Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Страница 2 из 2 ПерваяПервая 1 2
Показано с 11 по 16 из 16
  1. #11
    Аватар для [ForD]
    Пользователь

    Статус
    Оффлайн
    Регистрация
    14.11.2013
    Адрес
    Свердловская обл.
    Сообщений
    688
    Репутация:
    103 ±
    Цитата Сообщение от DeimoS Посмотреть сообщение
    Вообще можно было бы sscanf использовать, но можно и split
    Сама функция
    PHP код:
    stock split(const strsrc[], strdest[][], delimiter)
    {
        new 
    ili;
        new 
    aNum;
        new 
    len;
        while(
    <= strlen(strsrc)){
            if(
    strsrc[i]==delimiter || i==strlen(strsrc)){
                
    len strmid(strdest[aNum], strsrclii128);
                
    strdest[aNum][len] = 0;
                
    li i+1;
                
    aNum++;
            }
            
    i++;
        }
        return 
    1;

    Использование
    PHP код:
    new Coords[5][20];//Глобальный массив (5 - число переменных для хранения данных и 30 - число ячеек для хранения данных)


    new Filefile fopen("File.txt"io_read);
    if(
    file)
    {
        new 
    str[128];
        while(
    fread(filestrsizeof(str))) split(strCoords',');//Ищем в строке "str" запятую (можно разделять любым другим символом) и записываем данные в Coords
        
    fclose(file);

    Открыл тему,посмотрел код,вспотел мозг..

    В общем с использованием более-менее понятно,распиши сток пожалуйста :3
    Спасибо:3
    PAWN Compiler делает то, что вы приказали ему сделать, а не то, что вы хотели, чтобы он сделал..

    25% времени в программировании уходит на размышления о том, что пользователь может сделать не так.[HR]/Брайан Хьюмс/





    #FIXSAMP

  2. #12
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    PHP код:
    stock split(const strsrc[], strdest[][], delimiter)//Тут и так ясно, думаю
    {
        new 
    ili;
        new 
    aNum;
        new 
    len;
        while(
    <= strlen(strsrc)){
    //Запускаем цикл с условием "пока i меньше или равно числу символов в переменной strsrc"...
            
    if(strsrc[i]==delimiter || i==strlen(strsrc)){ 
    //Проверяем наличие разделителя и конец строки в определённой ячейке от переменной strsrc
                
    len strmid(strdest[aNum], strsrclii128);
    //Извлекаем текст до разделителя и записываем в переменную номер ячейки перед разделителем
                
    strdest[aNum][len] = 0;
    //Обнуляем ячейку, которую вернул strmid, тем самым удаляя текст с нулевой ячейки и до ячейки с разделителем
                
    li i+1;
    //i хранит ячейку с разделителем, поэтому чтоб при следующем разе эту самую ячейку не учитывать, прибавим к номеру ячейки единицу и запишем в переменную (используется в strmid)
                
    aNum++;
    //Прибавляем единицу к переменной, которая служит "указателем" для определения ячейки в массиве strdest (обеспечивает то, что данные до и после разделителя записываются в разные ячейки)
            
    }
            
    i++;
    //Начинаем новый такт, проверяя следующую ячейку с символом
        
    }
        return 
    1;

    Ну вот, как-то так. Не слишком подробно, ибо времени нет. Надеюсь поймёшь :)

  3. 2 пользователя(ей) сказали cпасибо:
    .Kos (28.01.2014) [ForD] (27.01.2014)
  4. #13
    Аватар для Salvacore
    Инжунер-погромист

    Статус
    Оффлайн
    Регистрация
    10.05.2013
    Адрес
    Аҧсуа бызшәа
    Сообщений
    2,271
    Репутация:
    418 ±
    Цитата Сообщение от DeimoS Посмотреть сообщение
    PHP код:
    stock split(const strsrc[], strdest[][], delimiter)//Тут и так ясно, думаю
    {
        new 
    ili;
        new 
    aNum;
        new 
    len;
        while(
    <= strlen(strsrc)){
    //Запускаем цикл с условием "пока i меньше или равно числу символов в переменной strsrc"...
            
    if(strsrc[i]==delimiter || i==strlen(strsrc)){ 
    //Проверяем наличие разделителя и конец строки в определённой ячейке от переменной strsrc
                
    len strmid(strdest[aNum], strsrclii128);
    //Извлекаем текст до разделителя и записываем в переменную номер ячейки перед разделителем
                
    strdest[aNum][len] = 0;
    //Обнуляем ячейку, которую вернул strmid, тем самым удаляя текст с нулевой ячейки и до ячейки с разделителем
                
    li i+1;
    //i хранит ячейку с разделителем, поэтому чтоб при следующем разе эту самую ячейку не учитывать, прибавим к номеру ячейки единицу и запишем в переменную (используется в strmid)
                
    aNum++;
    //Прибавляем единицу к переменной, которая служит "указателем" для определения ячейки в массиве strdest (обеспечивает то, что данные до и после разделителя записываются в разные ячейки)
            
    }
            
    i++;
    //Начинаем новый такт, проверяя следующую ячейку с символом
        
    }
        return 
    1;

    Ну вот, как-то так. Не слишком подробно, ибо времени нет. Надеюсь поймёшь :)
    Быстрее split

  5. Пользователь сказал cпасибо:
    DeimoS (27.01.2014)
  6. #14
    Аватар для [ForD]
    Пользователь

    Статус
    Оффлайн
    Регистрация
    14.11.2013
    Адрес
    Свердловская обл.
    Сообщений
    688
    Репутация:
    103 ±
    Цитата Сообщение от DeimoS Посмотреть сообщение
    PHP код:
    stock split(const strsrc[], strdest[][], delimiter)//Тут и так ясно, думаю
    {
        new 
    ili;
        new 
    aNum;
        new 
    len;
        while(
    <= strlen(strsrc)){
    //Запускаем цикл с условием "пока i меньше или равно числу символов в переменной strsrc"...
            
    if(strsrc[i]==delimiter || i==strlen(strsrc)){ 
    //Проверяем наличие разделителя и конец строки в определённой ячейке от переменной strsrc
                
    len strmid(strdest[aNum], strsrclii128);
    //Извлекаем текст до разделителя и записываем в переменную номер ячейки перед разделителем
                
    strdest[aNum][len] = 0;
    //Обнуляем ячейку, которую вернул strmid, тем самым удаляя текст с нулевой ячейки и до ячейки с разделителем
                
    li i+1;
    //i хранит ячейку с разделителем, поэтому чтоб при следующем разе эту самую ячейку не учитывать, прибавим к номеру ячейки единицу и запишем в переменную (используется в strmid)
                
    aNum++;
    //Прибавляем единицу к переменной, которая служит "указателем" для определения ячейки в массиве strdest (обеспечивает то, что данные до и после разделителя записываются в разные ячейки)
            
    }
            
    i++;
    //Начинаем новый такт, проверяя следующую ячейку с символом
        
    }
        return 
    1;

    Ну вот, как-то так. Не слишком подробно, ибо времени нет. Надеюсь поймёшь :)
    Огромедное спасибо! :3
    PAWN Compiler делает то, что вы приказали ему сделать, а не то, что вы хотели, чтобы он сделал..

    25% времени в программировании уходит на размышления о том, что пользователь может сделать не так.[HR]/Брайан Хьюмс/





    #FIXSAMP

  7. #15
    Аватар для [ForD]
    Пользователь

    Статус
    Оффлайн
    Регистрация
    14.11.2013
    Адрес
    Свердловская обл.
    Сообщений
    688
    Репутация:
    103 ±
    можно закрывать тему.
    PAWN Compiler делает то, что вы приказали ему сделать, а не то, что вы хотели, чтобы он сделал..

    25% времени в программировании уходит на размышления о том, что пользователь может сделать не так.[HR]/Брайан Хьюмс/





    #FIXSAMP

  8. #16
    Аватар для Osetin
    •Администратор•

    Статус
    Оффлайн
    Регистрация
    26.03.2013
    Адрес
    ♔Osetia, Vladikavkaz♔
    Сообщений
    3,432
    Репутация:
    1093 ±
    Закрыто!

 

 
Страница 2 из 2 ПерваяПервая 1 2

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •