Обработка пробелов с помощью функции scanf() в C

У меня следующая проблема. Я хотел бы отсканировать три точки из scanf в следующем формате: {[4;-1],[7;1.5],[4;4]}. Мой код выглядит так:

scanf("{[%lf;%lf],[%lf;%lf],[%lf;%lf]}", &a1, &a2, &b1, &b2, &c1, &c2)

Теперь я фактически проверяю, чтобы это было правильное преобразование для дальнейшей работы с ним. Но я хотел бы разрешить пользователю вводить что-то вроде этого

{ [ 4 ; -1 ] , [ 7 ; 1.5 ] , [ 4 ; 4 ] }

или даже

    {  [ 


     4 ; 

     -1 ] ,  [ 7 ;                         1.5 ] , [   4 ; 4 


] } 

поэтому scanf() все еще может дать мне 6 правильных преобразований. Что я должен делать?


person Michal Dvořák    schedule 29.10.2018    source источник
comment
Об этом формате данных в SO задают несколько вопросов, в том числе: stackoverflow.com/questions/53145987; stackoverflow.com/questions/53132823; stackoverflow.com/questions/53042562; stackoverflow.com/questions/53042562; stackoverflow.com/questions/53037182; stackoverflow.com/questions/53034556 — все они спрашивают об одном и том же новом формате данных SO осенью 2018 года в одном виде или еще один.   -  person Jonathan Leffler    schedule 05.11.2018


Ответы (1)


Чтобы разрешить пробелы, пробел перед каждым небелым пространством.

// "{[%lf;%lf],[%lf;%lf],[%lf;%lf]}"
" { [%lf ;%lf ] , [%lf ;%lf ] , [%lf ;%lf ] }"

Код также может добавлять пробел перед "%lf", но это не меняет функциональности, поскольку этот спецификатор уже использует необязательный начальный пробел.

" { [ %lf ; %lf ] , [ %lf ; %lf ] , [ %lf ; %lf ] }"
person chux - Reinstate Monica    schedule 29.10.2018