2016-11-23 2 views
0

Я пытаюсь разобрать строку в полукокса и несколько поплавков в следующем формате:Правильное использование sscanf_s

v 1.00000 1.00000 1.00000 

Первоначально с помощью sscanf я мог бы сделать это с:

char b; 
float x = 0.0f; 
float y = 0.0f; 
float z = 0.0f; 
int result = sscanf(lineHeader,"%c %f %f %f", &b, &x, &y, &z); 

Однако , Я пытаюсь устранить несвязанную проблему, которая требует от меня использования sscanf_s.

Если я просто изменить код на:

int result = sscanf_s(lineHeader,"%c %f %f %f", &b, &x, &y, &z); 

я получаю исключение о том, беззнаковое целое число, как ожидается. sscanf_s использует различное форматирование для синтаксического анализа строк?

ответ

1

Согласно the documentation, sscanf_s «s %c спецификатора преобразования требует дополнительного параметра для проверки размера буфера:

int result = sscanf_s(lineHeader,"%c %f %f %f", &b, rsize_t{1}, &vertex.x, &vertex.y, &vertex.z); 
//        It's a single char ^^^^^^^^^^ 
+0

Спасибо, это прекрасно. –

+0

@IanYoung почти. Я забыл бросить на 'rsize_t' :) – Quentin

+0

Еще раз спасибо, что полностью решена проблема :) –

Смежные вопросы