roboforum.ru

Технический форум по робототехнике.
Текущее время: 21 май 2025, 00:07

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 20 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: НЕ работает такой код scanf("%[^01]", str1);
СообщениеДобавлено: 25 ноя 2012, 15:06 
Не в сети

Зарегистрирован: 09 мар 2010, 09:18
Сообщения: 17
Откуда: Санкт Петербург
Добрый день, помогите пожалуйста разобраться с парсингом.
Пробую выводить на терминал символы с помощью такого кода:
char str1[10], str2[10];
scanf("%s%s", str1, str2);
printf("\n%s\n%s",str1,str2);
Так всё получается, все символы которые пришли выходят на терминал. Однако когда я добавляю в код []для исключения принимаемых символов, на терминал выходят пустые значения.
char str1[10], str2[10];
scanf("%[^0123456789]%s", str1, str2);
printf("\n%s\n%s",str1,str2);
Вроде вставляю в проект готовые примеры из найденных статей, но ничего не работает(
Гляньте мой файлик. В архиве лежат проекты Codevision, VMlab и Proteus


Вложения:
SSCANF.rar [89.92 КиБ]
Скачиваний: 0
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: НЕ работает такой код scanf("%[^01]", str1);
СообщениеДобавлено: 25 ноя 2012, 15:42 
Не в сети
Аватара пользователя

Зарегистрирован: 10 ноя 2011, 12:02
Сообщения: 5691
Откуда: Turku, Finland
Skype: elmot73
прог. языки: Java и все-все=все
ФИО: Илья
ВВод-то какой?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: НЕ работает такой код scanf("%[^01]", str1);
СообщениеДобавлено: 25 ноя 2012, 16:00 
Не в сети

Зарегистрирован: 09 мар 2010, 09:18
Сообщения: 17
Откуда: Санкт Петербург
Ввожу с терминала или считываю массив с помощью sscanf.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: НЕ работает такой код scanf("%[^01]", str1);
СообщениеДобавлено: 25 ноя 2012, 16:27 
Не в сети
Аватара пользователя

Зарегистрирован: 10 ноя 2011, 12:02
Сообщения: 5691
Откуда: Turku, Finland
Skype: elmot73
прог. языки: Java и все-все=все
ФИО: Илья
Так ЧТО вводится? Что с терминала - это я вижу.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: НЕ работает такой код scanf("%[^01]", str1);
СообщениеДобавлено: 25 ноя 2012, 16:46 
Не в сети

Зарегистрирован: 09 мар 2010, 09:18
Сообщения: 17
Откуда: Санкт Петербург
Ну вобще я планирую разложить по полочкам данные которые приходят с GPS модуля EB 500.
$GPRMC,161229.487,A,3723.2475,N,12158.3416,W,0.13,309.62,120598,,*10
$GPVTG,309.62,T,,M,0.13,N,0.2,K*6E
$GPGGA,161229.487,3723.2475,N,12158.3416,W,1,07,1.0,9.0,M,,,,0000*18
Сейчас я пытаюсь научится обрабатывать строку, ну например, abcd12345ifg хочу раскидать её на 3 массива, "abcd" "12345" "ifg" .
И собственно не могу понять почему scanf("%s", str1); работает
а scanf("%[^0123456789]", str1); не работает?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: НЕ работает такой код scanf("%[^01]", str1);
СообщениеДобавлено: 25 ноя 2012, 17:47 
Не в сети
Аватара пользователя

Зарегистрирован: 10 ноя 2011, 12:02
Сообщения: 5691
Откуда: Turku, Finland
Skype: elmot73
прог. языки: Java и все-все=все
ФИО: Илья
scanf("%[^0123456789]", str1); не работает?
Этот сканф, по идее, должен взять последовательность нецифр в начале ввода. И, если он ее нашел, вернуть единицу.

Лично я NMEA парсю вот таким матюгом:
Код:
      double fTime;
      int  aTime;
      char aLat[11];
      char aLng[11];
      float aSog;
      float aCog;
      int varCount = sscanf(nmeaLine,"$GPRMC,%lf,%c,%7s%*d,%c,%8s%*d,%c,%f,%f,%*6s,%*f,%*c",
         &fTime, &state,
         &aLat[1],aLat,&aLng[1],aLng,
         &aSog,&aCog);


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: НЕ работает такой код scanf("%[^01]", str1);
СообщениеДобавлено: 25 ноя 2012, 19:42 
Не в сети
Аватара пользователя

Зарегистрирован: 15 ноя 2009, 13:37
Сообщения: 750
Откуда: Porto Franco "Odessa"
что то я не слышал , что бы sscanf понимал regexp ....

_________________
die Wahrheit ist irgendwo da draußen


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: НЕ работает такой код scanf("%[^01]", str1);
СообщениеДобавлено: 25 ноя 2012, 19:45 
Не в сети
Аватара пользователя

Зарегистрирован: 10 ноя 2011, 12:02
Сообщения: 5691
Откуда: Turku, Finland
Skype: elmot73
прог. языки: Java и все-все=все
ФИО: Илья
Это не regexp, хотя немного похож. По доке должно работать, но я сам не пробовал.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: НЕ работает такой код scanf("%[^01]", str1);
СообщениеДобавлено: 25 ноя 2012, 19:48 
Не в сети
Аватара пользователя

Зарегистрирован: 15 ноя 2009, 13:37
Сообщения: 750
Откуда: Porto Franco "Odessa"
по какой доке?

_________________
die Wahrheit ist irgendwo da draußen


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: НЕ работает такой код scanf("%[^01]", str1);
СообщениеДобавлено: 25 ноя 2012, 19:52 
Не в сети
Аватара пользователя

Зарегистрирован: 10 ноя 2011, 12:02
Сообщения: 5691
Откуда: Turku, Finland
Skype: elmot73
прог. языки: Java и все-все=все
ФИО: Илья
Скажем, http://www.opennet.ru/man.shtml?topic=s ... &russian=0


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: НЕ работает такой код scanf("%[^01]", str1);
СообщениеДобавлено: 25 ноя 2012, 20:15 
Не в сети
Аватара пользователя

Зарегистрирован: 15 ноя 2009, 13:37
Сообщения: 750
Откуда: Porto Franco "Odessa"
что то я того же в доках по winavr gcc не вижу ....

_________________
die Wahrheit ist irgendwo da draußen


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: НЕ работает такой код scanf("%[^01]", str1);
СообщениеДобавлено: 25 ноя 2012, 21:01 
Не в сети

Зарегистрирован: 09 мар 2010, 09:18
Сообщения: 17
Откуда: Санкт Петербург
Что то начинает вырисовываться, сейчас поэкспериментирую.
И всё таки по поводу такой записи
char str1[10], str2[10];
scanf("%[0123456789]%s", str1, str2);
printf("\n%s\n%s",str1,str2);
Если верить статье http://www.realcoding.net/articles/funktsii-standartnogo-vvodavyvoda-printf-scanf.html
то если на терминале ввести набор символов:
12345abcdefg456
На экране программа выдаст:
12345
abcdefg456
А у меня терминал VM lab выдаёт только <LF> а в окне Watch напротив str1 и str2 <NUL>,<NUL>,<NUL>,...

Что же я делаю не так? Может глянете мой проект.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: НЕ работает такой код scanf("%[^01]", str1);
СообщениеДобавлено: 25 ноя 2012, 21:19 
Не в сети
Аватара пользователя

Зарегистрирован: 10 ноя 2011, 12:02
Сообщения: 5691
Откуда: Turku, Finland
Skype: elmot73
прог. языки: Java и все-все=все
ФИО: Илья
Возможно сишная библиотека для АВР не держит такой формат


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: НЕ работает такой код scanf("%[^01]", str1);
СообщениеДобавлено: 26 ноя 2012, 21:38 
Не в сети

Зарегистрирован: 09 мар 2010, 09:18
Сообщения: 17
Откуда: Санкт Петербург
У меня такое ощущение что библиотека для avr такой
Код:
%lf
функции тоже не содержит(


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: НЕ работает такой код scanf("%[^01]", str1);
СообщениеДобавлено: 26 ноя 2012, 21:56 
Не в сети
Аватара пользователя

Зарегистрирован: 01 сен 2009, 14:58
Сообщения: 1142
Откуда: Чехия
прог. языки: C/С++, VHDL, Verilog, ASM, Python
Обработка на чем прводится PC/MC?


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 20 ]  На страницу 1, 2  След.

Часовой пояс: UTC + 4 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
phpBB SEO