Вставить строку в массив - скрипт PAWN

Я пытаюсь урезать строки моего файла, добавив одну переменную в несколько массивов. Поэтому я хотел бы иметь строку или переменную массива, например:

new combomeals[] = { 
    3025101, 3025100, 3003000, 3025002, 3030101, 3025001, 3025000, 3021602, 3031402, 3020100, 
    3031401, 3031400, 3031302, 3020242, 3031301, 3031300, 3021702, 3021701, 3021700, 3020602, 
    3021601, 3030100, 3021600, 3021502, 3021501, 3020201, 3021500, 3020150, 3020502, 3020501, 
    3020500, 3001802, 3001801, 3001800, 3001702, 3001701, 3001700, 3011602, 3011601, 3011600, 
    3011502, 3020202, 3011501, 3011500, 3011232, 3011231, 3011202, 3011201, 3010602, 3010601, 
    3010600, 3010902, 3010901, 3010900, 3011102, 3011101, 3011100, 3011002, 3011001, 3011000, 
}

На самом деле это намного длиннее, но я сократил это для объяснения... Я хочу взять combomeals[] и поместить это в другие массивы. Следующее не работает, но вы получите идею:

new first_array[] = { 
    1, 
    2, 
    3,
    combomeals[], 
}

new second_array[] = { 
    4, 
    5, 
    6,
    combomeals[], 
}

new third_array[] = { 
    7, 
    8, 
    9,
    combomeals[], 
}

Конечная цель - поместить первый массив в несколько других массивов. Пожалуйста, дайте мне знать, если это имеет смысл, и если вы можете помочь!

Спасибо!

1 ответ

Решение

Вы не можете расширить массив так, как вы пытаетесь. При условии, что new был псевдоним для целочисленного типа, то компилятор будет принимать только список инициализатора для first_array если все элементы в списке одного типа. Но последний элемент списка является синтаксической ошибкой, так как combomeals это массив, и combomeals[] не принадлежит в списке инициализатора.

Аналогично для second_array а также third_array,

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

#define COMBOS \
3025101, 3025100, 3003000, 3025002, 3030101, 3025001, 3025000, 3021602, 3031402, 3020100, \
3031401, 3031400, 3031302, 3020242, 3031301, 3031300, 3021702, 3021701, 3021700, 3020602, \
3021601, 3030100, 3021600, 3021502, 3021501, 3020201, 3021500, 3020150, 3020502, 3020501, \
3020500, 3001802, 3001801, 3001800, 3001702, 3001701, 3001700, 3011602, 3011601, 3011600, \
3011502, 3020202, 3011501, 3011500, 3011232, 3011231, 3011202, 3011201, 3010602, 3010601, \
3010600, 3010902, 3010901, 3010900, 3011102, 3011101, 3011100, 3011002, 3011001, 3011000,

new combomeals[] = { COMBOS };

new first_array[] = { 1, 2, 3, COMBOS };
new second_array[] = { 4, 5, 6, COMBOS };
new third_array[] = { 7, 8, 9, COMBOS };

Если у вашего компилятора проблемы с длинной строкой исходного кода, возможно, вам придется разделить COMBOS Кроме. Это менее удобно, но c89 Компилятор требуется только для поддержки исходного файла длиной 509 байт.

#define COMBOS1 \
3025101, 3025100, 3003000, 3025002, 3030101, 3025001, 3025000, 3021602, 3031402, 3020100, \
3031401, 3031400, 3031302, 3020242, 3031301, 3031300, 3021702, 3021701, 3021700, 3020602, \
3021601, 3030100, 3021600, 3021502, 3021501, 3020201, 3021500, 3020150, 3020502, 3020501
#define COMBOS2 \
3020500, 3001802, 3001801, 3001800, 3001702, 3001701, 3001700, 3011602, 3011601, 3011600, \
3011502, 3020202, 3011501, 3011500, 3011232, 3011231, 3011202, 3011201, 3010602, 3010601, \
3010600, 3010902, 3010901, 3010900, 3011102, 3011101, 3011100, 3011002, 3011001, 3011000

new combomeals[] = {
    COMBOS1,
    COMBOS2,
};

new first_array[] = {
    1, 2, 3,
    COMBOS1,
    COMBOS2,
};

/* ...etc... */

Вам может понадобиться дополнительно разбить строки, если ваш компилятор C не соответствует.

Другие вопросы по тегам