Вставить строку в массив - скрипт 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 не соответствует.