PDA

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



Димарио
15.07.2019, 16:21
Не могу понять как работает условие при использовании sscanf (в частности, допустим, при его применении в написании команд)
Опытным путём я установил что sscanf возвращает 0 если успешно разделил строку и -1 если этого сделать не удалось
Так вот вопрос, почему такая конструкция выдаёт игроку сообщение когда он что-то неправильно указал, если sscanf возвращает -1 в таком случае и все то что находится в if(..) является верным и код должен идти дальше, без выдачи игроку return, ведь по сути же все что конкретно не 0 - истина
А если sscanf успешно разделил бы, то в условие наоборот бы передалось 0 и код должен выдать этот самый return, но на практике же все происходит ровным счетом наоборот, почему?

if(sscanf(params, "d", num)) return SendClientMessage(...)

Daniel_Cortez
15.07.2019, 18:19
Так вот вопрос, почему такая конструкция выдаёт игроку сообщение когда он что-то неправильно указал, если sscanf возвращает -1 в таком случае и все то что находится в if(..) является верным и код должен идти дальше, без выдачи игроку return
sscanf при неудачном считывании возвращает -1, условие оказывается истинным (ибо значение ненулевое) и выполняется собственно то, что внутри if - т.е. вывод сообщения об ошибке "return SendClientMessage(...)". И наоборот: sscanf успешно считывает данные, возвращает 0, условие не выполняется, сообщение об ошибке не выводится и код выполняется дальше.
Всё просто же.