PDA

Просмотр полной версии : [Вопрос] sscanf



SlimX
20.08.2015, 17:41
Привет, ребят.
Напомните пожалуйста, как через ссканф записывать текст в массив.
Как делаю:

cache_get_field_content(i, "RankName", temp), sscanf(temp, "p<|>s[16]", FracInfo[i][fRankName]);

Логи:



[01:07:30] sscanf warning: Strings without a length are deprecated, please add a destination size.
[01:07:30] sscanf warning: String buffer overflow.
[01:07:30] sscanf warning: String buffer overflow.
[01:07:30] sscanf warning: String buffer overflow.
[01:07:30] sscanf warning: String buffer overflow.
[01:07:30] sscanf warning: String buffer overflow.
[01:07:30] sscanf warning: String buffer overflow.
[01:07:30] sscanf warning: String buffer overflow.
[01:07:30] sscanf warning: String buffer overflow.
[01:07:30] sscanf warning: String buffer overflow.
[01:07:30] sscanf warning: String buffer overflow.
[01:07:30] sscanf warning: String buffer overflow.
[01:07:30] sscanf warning: String buffer overflow.
[01:07:30] sscanf warning: String buffer overflow.
[01:07:30] sscanf warning: String buffer overflow.
[01:07:30] sscanf warning: String buffer overflow.
[01:07:30] [Мэрия] RankName: PayDay: 500
[01:07:30] 0|0|0|0|0|0|0|500|0|0|0|0|0|500|500|500
[01:07:30] [Загрузка фракций] Фракций загружено: 1

wAx
20.08.2015, 19:14
cache_get_field_content(i, "RankName", temp), попробуй на это поменять

cache_get_field_content(i, "RankName", temp, 1, 16)

$continue$
20.08.2015, 19:19
А что за версия плагина?

SlimX
20.08.2015, 19:32
А что за версия плагина?
2.8.1



cache_get_field_content(i, "RankName", temp), попробуй на это поменять

cache_get_field_content(i, "RankName", temp, 1, 16)
Нет, ты не понял, ты загружаешь в локальный массив, а мне нужно в глобальный, и по определенным параметрам, то-есть, смотрим текст через | и каждый раз записываем в +1 глобальный массив.

$continue$
20.08.2015, 19:56
Версия плагина MySQL

SlimX
20.08.2015, 19:58
Версия плагина MySQL
R39-3.
Зарплату подгружаю вот так:

cache_get_field_content(i, "PayDay", temp), sscanf(temp, "p<|>a<d>[16]", FracInfo[i][fPayDay]);
С зарплатой все нормально.

wAx
20.08.2015, 20:06
2.8.1


Нет, ты не понял, ты загружаешь в локальный массив, а мне нужно в глобальный, и по определенным параметрам, то-есть, смотрим текст через | и каждый раз записываем в +1 глобальный массив.

я загружаю ровно в тот массив, который ты предоставил, не?

$continue$
20.08.2015, 20:06
Стрельба в ногу себе? Зачем в многопоточном плагине юзать sscanf? -_-

wAx
20.08.2015, 20:08
да, и зачем тебе разделитель p<|> если в поле у тебя по любому будет 1 значение?
Загружай RankName без sscanf...

- - - Добавлено - - -


Стрельба в ногу себе? Зачем в многопоточном плагине юзать sscanf? -_-


cache_get_field_content(0, "exitpos", String_Buffer, Mysql_Connect, 100);
sscanf(String_Buffer, "p<,>fffdd", PlayerInfo[playerid][pExitPos][0], PlayerInfo[playerid][pExitPos][1], PlayerInfo[playerid][pExitPos][2], PlayerInfo[playerid][pExitVirtual], PlayerInfo[playerid][pExitInterior]);
действительно, для чего нужен sscanf? Ах да! Для удобства хранения данных

$continue$
20.08.2015, 20:15
да, и зачем тебе разделитель p<|> если в поле у тебя по любому будет 1 значение?
Загружай RankName без sscanf...

- - - Добавлено - - -



cache_get_field_content(0, "exitpos", String_Buffer, Mysql_Connect, 100);
sscanf(String_Buffer, "p<,>fffdd", PlayerInfo[playerid][pExitPos][0], PlayerInfo[playerid][pExitPos][1], PlayerInfo[playerid][pExitPos][2], PlayerInfo[playerid][pExitVirtual], PlayerInfo[playerid][pExitInterior]);
действительно, для чего нужен sscanf? Ах да! Для удобства хранения данных

Я никаких удобств в этом не вижу.

wAx
20.08.2015, 20:17
Я никаких удобств в этом не вижу.

из вредности не буду доказывать тебе обратное... Но и ты не внушай людям своё мнение

SlimX
20.08.2015, 20:44
да, и зачем тебе разделитель p<|> если в поле у тебя по любому будет 1 значение?
Загружай RankName без sscanf...

- - - Добавлено - - -




cache_get_field_content(0, "exitpos", String_Buffer, Mysql_Connect, 100);
sscanf(String_Buffer, "p<,>fffdd", PlayerInfo[playerid][pExitPos][0], PlayerInfo[playerid][pExitPos][1], PlayerInfo[playerid][pExitPos][2], PlayerInfo[playerid][pExitVirtual], PlayerInfo[playerid][pExitInterior]);
действительно, для чего нужен sscanf? Ах да! Для удобства хранения данных


cache_get_field_content(i, "RankName", temp), sscanf(temp, "p<|>s[16]", FracInfo[i][fRankName][0], FracInfo[i][fRankName][1], FracInfo[i][fRankName][2], FracInfo[i][fRankName][3], FracInfo[i][fRankName][4], FracInfo[i][fRankName][5], FracInfo[i][fRankName][6],
FracInfo[i][fRankName][7], FracInfo[i][fRankName][8], FracInfo[i][fRankName][9], FracInfo[i][fRankName][10], FracInfo[i][fRankName][11], FracInfo[i][fRankName][12], FracInfo[i][fRankName][13], FracInfo[i][fRankName][14], FracInfo[i][fRankName][15]);

Лог:

[19:20:54] sscanf warning: Format specifier does not match parameter count.
[19:20:54] [Мэрия] RankName: Майор|None|None PayDay: 0
[19:20:54] 0|0|0|0|0|0|0|5
[19:20:54] [Загрузка фракций] Фракций загружено: 1
С чего ты взял что у меня одно значение? У меня 16 названий через |

- - - Добавлено - - -

Исправил. Сделал через двумерный массив.
Закрыто.