PDA

Просмотр полной версии : [Вопрос] Как разбить следующее...



StevenH
28.03.2017, 21:29
Доброго времени суток господа, вопрос вот в чем. В базе (в таблице), я храню склады армий как "массив", через запятую. Т.е. получается: 0,0,50,100,55,135 (где 0,0 - СВ | 50 - ВВС материалы, 100 - ВВС патроны | 55 - ВМФ материалы, 135 - ВМФ патроны).

При загрузке, мне нужно это все как то дело разбить, что бы следующее например: 0,0,50,100,55,135, разбилось в gArmyWarehouse[3][2], чтобы конечный результат был таким:



gArmyWarehouse[0][0] = 0
gArmyWarehouse[0][1] = 0
gArmyWarehouse[1][0] = 55
gArmyWarehouse[1][1] = 100
gArmyWarehouse[2][0] = 55
gArmyWarehouse[2][1] = 135


Как такое сделать?

Alpano
28.03.2017, 21:54
sscanf.

StevenH
28.03.2017, 22:30
sscanf.

Да ты что? Так можешь покажешь как? В одномерный массив я могу и сам разбить, а в двумерный как?

Alpano
28.03.2017, 22:36
Чет не догнал, но попробуем так:
sscanf(String,"dddddd",gArmyWarehouse[0][0],gArmyWarehouse[0][1],gArmyWarehouse[1][0],gArmyWarehouse[1][1],gArmyWarehouse[2][0],gArmyWarehouse[2][1]);

Geebrox
28.03.2017, 22:59
sscanf(string, "p<,>dddddd",
gArmyWarehouse[0][0],
gArmyWarehouse[0][1],
gArmyWarehouse[1][0],
gArmyWarehouse[1][1],
gArmyWarehouse[2][0],
gArmyWarehouse[2][1]);

Как научиться использовать sscanf2 (http://forum.sa-mp.com/showthread.php?t=570927)

ziggi
28.03.2017, 23:12
Если и использовать sscanf, то нормально:

new gArmyWarehouse[6][2];
sscanf("0,0,50,100,55,135", "p<,>a<i>[12]", gArmyWarehouse[0]);

Можно ещё воспользоваться костылём с подсчётом размера массива:

new fmt[16];
format(fmt, sizeof(fmt), "p<,>a<i>[%d]", sizeof(gArmyWarehouse) * sizeof(gArmyWarehouse[]));
sscanf("0,0,50,100,55,135", fmt, gArmyWarehouse[0]);

Жаль, что в Pawn нельзя встраивать в строки произведение констант, что-то вроде #(6 * 2).