jvf 7 / 7 / 3 Регистрация: 27.05.2017 Сообщений: 89 Записей в блоге: 10 |
||||
1 |
||||
Строки работают с английским, но не с кирилицей28.05.2017, 11:48. Показов 3071. Ответов 26 Метки нет (Все метки)
Есть программа: на входе подаётся слово ‘Helo bro». А на выходе — слово записывается обратными буквами, то есть получается «orb olleH». Но это работает только для английских букв. Если подать слово «Привет мир», то ничего не будет работать. Что мне исправить в коде, чтобы текст работал и с русскими буквами?
__________________
0 |
7 / 7 / 10 Регистрация: 22.12.2016 Сообщений: 105 |
|
28.05.2017, 13:11 |
2 |
Все работает
1 |
nd2 3433 / 2812 / 1249 Регистрация: 29.01.2016 Сообщений: 9,426 |
||||
28.05.2017, 16:29 |
3 |
|||
Если пользуешься Сode::Block mingw.
попробуй изменить шрифт на Lucida Console. Если не поможет Это делается в связке с этим, отдельно не поможет:
0 |
7 / 7 / 3 Регистрация: 27.05.2017 Сообщений: 89 Записей в блоге: 10 |
|
28.05.2017, 17:57 [ТС] |
4 |
Я использую Sublime Text — пока не понял, куда там вводить SetConsoleCP(1251); И как менять шрифт на Но попробую разобраться.
0 |
3433 / 2812 / 1249 Регистрация: 29.01.2016 Сообщений: 9,426 |
|
28.05.2017, 18:02 |
5 |
куда там вводить В начале main().
И как менять шрифт на В свойствах запущенной консоли.
1 |
jvf 7 / 7 / 3 Регистрация: 27.05.2017 Сообщений: 89 Записей в блоге: 10 |
||||
28.05.2017, 18:37 [ТС] |
6 |
|||
Пишет следующую ошибку: P.S.
0 |
7 / 7 / 3 Регистрация: 27.05.2017 Сообщений: 89 Записей в блоге: 10 |
|
28.05.2017, 18:42 [ТС] |
7 |
«В свойствах запущенной консоли. У меня всё это выглядит немного по-другому: использую Ubuntu (операционная система для Linux): см. вложение в это сообщение Миниатюры
0 |
7 / 7 / 3 Регистрация: 27.05.2017 Сообщений: 89 Записей в блоге: 10 |
|
28.05.2017, 18:55 [ТС] |
8 |
Ещё одно важное замечание: русские буквы у меня есть, поддерживаются. cout<<«Привет мир»<<endl; И я увижу русские буквы (не буде никаких крякозябров). Не работает конкретно пример в шапке этой темы.
0 |
3433 / 2812 / 1249 Регистрация: 29.01.2016 Сообщений: 9,426 |
|
28.05.2017, 19:06 |
9 |
использую Ubuntu (операционная система для Linux) Тогда лучше там спрашивать: https://www.cyberforum.ru/cpp-linux/ Добавлено через 2 минуты
Не работает конкретно пример в шапке этой темы. Скорее всего, в Sublime Text нужно что-то настроить.
1 |
7 / 7 / 3 Регистрация: 27.05.2017 Сообщений: 89 Записей в блоге: 10 |
|
28.05.2017, 19:39 [ТС] |
10 |
Создал там тему: Строки работают с английским, но не с кириллицей Вот, кстати, конфиг Sublime Text для C++: если что-то менять, то там: Код { "shell_cmd": "g++ -std=c++11 "${file}" -o "${file_path}/${file_base_name}"", "file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$", "working_dir": "${file_path}", "selector": "source.c, source.c++", "variants": [ { "name": "Run", "shell_cmd": "g++ -std=c++11 "${file}" -o "${file_path}/${file_base_name}" && "${file_path}/${file_base_name}"" } ] }
0 |
nd2 3433 / 2812 / 1249 Регистрация: 29.01.2016 Сообщений: 9,426 |
||||||||
28.05.2017, 20:01 |
11 |
|||||||
Я могу, например, написать: То есть, вот так работает?
А так нет?
1 |
7 / 7 / 3 Регистрация: 27.05.2017 Сообщений: 89 Записей в блоге: 10 |
|
28.05.2017, 20:06 [ТС] |
12 |
Два приведённых варианта работают. Не работает пример в шапке теме — если поменять следующую строку: str = «Hello bro»; на str = «Привет мир»; Тогда программа напишет — она завершена, но она ничего не выведет: не будет ни крякозябров, ни правильного ответа — ничего.
0 |
3433 / 2812 / 1249 Регистрация: 29.01.2016 Сообщений: 9,426 |
|
28.05.2017, 20:12 |
13 |
Не работает пример в шапке теме — если поменять следующую строку: Приведи полный код, который не работает.
1 |
Nemovok 296 / 125 / 106 Регистрация: 30.10.2015 Сообщений: 690 |
||||
28.05.2017, 20:13 |
14 |
|||
1 |
jvf 7 / 7 / 3 Регистрация: 27.05.2017 Сообщений: 89 Записей в блоге: 10 |
||||||||
28.05.2017, 20:21 [ТС] |
15 |
|||||||
Это работает: выводится следующие 2 строки orb olleH
Этот вариант не работает, ничего не выводится: Sublime Text пишет просто: [Finished in 0.8s] — и больше ничего
0 |
nd2 3433 / 2812 / 1249 Регистрация: 29.01.2016 Сообщений: 9,426 |
||||
28.05.2017, 20:23 |
16 |
|||
Если так:
1 |
7 / 7 / 3 Регистрация: 27.05.2017 Сообщений: 89 Записей в блоге: 10 |
|
28.05.2017, 20:26 [ТС] |
17 |
Тогда выводится следующее: ??? ??????
0 |
nd2 3433 / 2812 / 1249 Регистрация: 29.01.2016 Сообщений: 9,426 |
||||
28.05.2017, 20:29 |
18 |
|||
Вот такой что выводит?
1 |
7 / 7 / 3 Регистрация: 27.05.2017 Сообщений: 89 Записей в блоге: 10 |
|
28.05.2017, 20:31 [ТС] |
19 |
Привет, мир!
0 |
nd2 3433 / 2812 / 1249 Регистрация: 29.01.2016 Сообщений: 9,426 |
||||
28.05.2017, 20:31 |
20 |
|||
Вот такой?
1 |
необходимо разобраться с обработкой системных исключений
, (что писать сюда: catch (…))? компилятор g++
- Подписаться на тему
- Сообщить другу
- Скачать/распечатать тему
|
|
neokoder встречался с подобным, не твой случай? Сообщение отредактировано: повстанец — 03.12.11, 14:56 |
niXman |
|
про «соответствие микрософткомпилера стандарту» мы все знаем по этой теме. но что-то подобных тем в сторону gcc/edg/comeau найдено не было. Добавлено 03.12.11, 15:00 Цитата neokoder @ 03.12.11, 14:55 С MSVC таких проблем не было.
так ты ведь микрософткомпилер ставил на микрософтвенду. не удивительно что оно работает Добавлено 03.12.11, 15:01 Цитата Qraizer @ 03.12.11, 14:57 празднуем трёхмесячный дидлайн на проекте поздравляю! Добавлено 03.12.11, 15:04 Цитата Qraizer @ 03.12.11, 14:54 если эта платформа не поддерживается полностью. да ты че в самом деле?! посчитай сколько платформ! чтоб было так как ты говоришь, то под каждую платформу пришлось бы разрабатывать поддержку специфичных для нее расширений, а так же стандартизация этих расширений! это же просто ппц какой будет! по этому и существуют стандарты, которые покрывают максимум требований. Добавлено 03.12.11, 15:05 Сообщение отредактировано: niXman — 03.12.11, 15:05 |
neokoder |
|
Senior Member Рейтинг (т): 43 |
Цитата повстанец @ 03.12.11, 14:56 neokoder встречался с подобным, не твой случай?
Я прописал в PATH все пути к папкам, вложенным в mingw где есть exe-Файлы. Все равно пишет что «Отказано в доступе» если из другого каталога вызываю g++. seh.cpp:1:21: error: no include path in which to search for windows.h seh.cpp:2:19: error: no include path in which to search for stdio.h seh.cpp:9:1: error: ‘LONG’ does not name a type seh.cpp: In function ‘int main()’: seh.cpp:20:21: error: ‘SetConsoleCP’ was not declared in this scope seh.cpp:21:27: error: ‘SetConsoleOutputCP’ was not declared in this scope seh.cpp:24:31: error: ‘TopLevelUnhandledExceptionFilter’ was not declared in thi s scope seh.cpp:24:63: error: ‘SetUnhandledExceptionFilter’ was not declared in this sco pe seh.cpp:39:31: error: ‘printf’ was not declared in this scope seh.cpp:44:71: error: ‘printf’ was not declared in this scope seh.cpp:45:11: error: ‘getchar’ was not declared in this scope Ну и что это за хрень? Он что инклуды не видит что ли? Как их подключить то на автомате чтобы при компиляции каждый раз не указывать? Сообщение отредактировано: neokoder — 03.12.11, 15:12 |
niXman |
|
Цитата neokoder @ 03.12.11, 15:10 Он что инклуды не видит что ли?
не может быть такого. при сборке компилятора оп «запоминает» пути к хидерам/либам относительно бинарников. впервые с таким встречаюсь.. Добавлено 03.12.11, 15:19 Сообщение отредактировано: niXman — 03.12.11, 15:19 |
neokoder |
|
Senior Member Рейтинг (т): 43 |
Цитата niXman @ 03.12.11, 14:59 neokoder, мне тут подсказывают, что нельзя ставить в корень дисков. а лучше всего в каталог документов пользователя. (сам не проверял) Ну поставил в Documents — такая же фигня. Как его настроить то чтобы он инклуды видел? Или хоть как справку по командам получиить чтобы явно указать путь к инклудам при компиляции? Чего только не пробовал /h /help /? -h -help -? ничё не показывает! Где хоть файл настроек хранится чтобы пути можно было посмотреть? Сообщение отредактировано: neokoder — 03.12.11, 15:21 |
niXman |
|
Цитата neokoder @ 03.12.11, 15:19 /h /help /? -h -help -?
это же не unix way! Добавлено 03.12.11, 15:21 Добавлено 03.12.11, 15:22 |
повстанец |
|
А чёрт его знает, с меня самого семь потов сошло пока до ума довёл всё это дело, но мне было легче, я пакеты скачивал и в DEV-С++ пихал, а она уже сама распихивала по директориям и пути прописывала какие надо. Моя задача была чтобы все пакеты друг другу соответвовали, чтобы были более или менее новыми, чтобы были необходимые, чтобы лишних не было, чтобы… А теперь говорят, что я поставил не то! Сообщение отредактировано: повстанец — 03.12.11, 15:28 |
niXman |
|
Цитата повстанец @ 03.12.11, 15:26 чтобы были более или менее новыми ты же тестовый раритет юзаешь, батенька! |
повстанец |
|
Два вопроса, как ты определил, что тестовый и почему раритет? Апрель 2010 года |
niXman |
|
Цитата повстанец @ 03.12.11, 15:31 как ты определил, что тестовый — это тестовые сборки нестабильных версий. тоже, что и у меня в сборках версии 4.7.0. Цитата повстанец @ 03.12.11, 15:31 и почему раритет? потому что с тех пор вышла куча новых версий. |
повстанец |
|
да блин виноват, чё же делать? Добавлено 03.12.11, 15:41 Цитата niXman @ 03.12.11, 15:34 потому что с тех пор вышла куча новых версий. Так-то оно так, просто когда за день несколько версий выходит, как-то не очень не очень подмывает идти в ногу со временем! |
niXman |
|
Цитата повстанец @ 03.12.11, 15:37 чё же делать?
в третий(или четвертый?) раз указать на мою подпись? |
повстанец |
|
Да ёлки-палки, а чё такое релиз, а чё такое пререлиз, а чё такое снэпшот? Надо ставить так уж наверное, я поставил уже однажды оказалось тестовой версией. |
niXman |
|
Цитата повстанец @ 03.12.11, 15:46 чё такое релиз, а чё такое пререлиз, а чё такое снэпшот? ну гм… это фундаментальные понятия. Цитата повстанец @ 03.12.11, 15:46 я поставил уже однажды оказалось тестовой версией значит либо ты не читал примечания к выпуску, либо тебя обманули. |
повстанец |
|
Не набивай себе цену, а? Скажи уж, что ли, просто и ясно. |
0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
0 пользователей:
- Предыдущая тема
- C/C++: Системное программирование и WinAPI
- Следующая тема
[ Script execution time: 0,0457 ] [ 16 queries used ] [ Generated: 9.02.23, 15:17 GMT ]
СОДЕРЖАНИЕ ►
- Произошла ошибка при загрузке скетча в Ардуино
- programmer is not responding
- a function-definition is not allowed arduino ошибка
- expected initializer before ‘}’ token arduino ошибка
- ‘что-то’ was not declared in this scope arduino ошибка
- No such file or directory arduino ошибка
- Compilation error: Missing FQBN (Fully Qualified Board Name)
Ошибки компиляции Arduino IDE возникают при проверке или загрузке скетча в плату, если код программы содержит ошибки, компилятор не может найти библиотеки или переменные. На самом деле, сообщение об ошибке при загрузке скетча связано с невнимательностью самого программиста. Рассмотрим в этой статье все возможные ошибки компиляции для платы Ардуино UNO R3, NANO, MEGA и пути их решения.
Произошла ошибка при загрузке скетча Ардуино
Самые простые ошибки возникают у новичков, кто только начинает разбираться с языком программирования Ардуино и делает первые попытки загрузить скетч. Если вы не нашли решение своей проблемы в статье, то напишите свой вопрос в комментариях к этой записи и мы поможем решить вашу проблему с загрузкой (бесплатно!).
avrdude: stk500_recv(): programmer is not responding
Что делать в этом случае? Первым делом обратите внимание какую плату вы используете и к какому порту она подключена (смотри на скриншоте в правом нижнем углу). Необходимо сообщить Arduino IDE, какая плата используется и к какому порту она подключена. Если вы загружаете скетч в Ардуино Nano V3, но при этом в настройках указана плата Uno или Mega 2560, то вы увидите ошибку, как на скриншоте ниже.
Такая же ошибка будет возникать, если вы не укажите порт к которому подключена плата (это может быть любой COM-порт, кроме COM1). В обоих случаях вы получите сообщение — плата не отвечает (programmer is not responding). Для исправления ошибки надо на панели инструментов Arduino IDE в меню «Сервис» выбрать нужную плату и там же, через «Сервис» → «Последовательный порт» выбрать порт «COM7».
a function-definition is not allowed here before ‘{‘ token
Это значит, что в скетче вы забыли где-то закрыть фигурную скобку. Синтаксические ошибки IDE тоже распространены и связаны они просто с невнимательностью. Такие проблемы легко решаются, так как Arduino IDE даст вам подсказку, стараясь отметить номер строки, где обнаружена ошибка. На скриншоте видно, что строка с ошибкой подсвечена, а в нижнем левом углу приложения указан номер строки.
expected initializer before ‘}’ token / expected ‘;’ before ‘}’ token
Сообщение expected initializer before ‘}’ token говорит о том, что вы, наоборот где-то забыли открыть фигурную скобку. Arduino IDE даст вам подсказку, но если скетч довольно большой, то вам придется набраться терпения, чтобы найти неточность в коде. Ошибка при компиляции программы: expected ‘;’ before ‘}’ token говорит о том, что вы забыли поставить точку с запятой в конце командной строки.
‘что-то’ was not declared in this scope
Что за ошибка? Arduino IDE обнаружила в скетче слова, не являющиеся служебными или не были объявлены, как переменные. Например, вы забыли продекларировать переменную или задали переменную ‘DATA’, а затем по невнимательности используете ‘DAT’, которая не была продекларирована. Ошибка was not declared in this scope возникает при появлении в скетче случайных или лишних символов.
Например, на скриншоте выделено, что программист забыл продекларировать переменную ‘x’, а также неправильно написал функцию ‘analogRead’. Такая ошибка может возникнуть, если вы забудете поставить комментарий, написали функцию с ошибкой и т.д. Все ошибки также будут подсвечены, а при нескольких ошибках в скетче, сначала будет предложено исправить первую ошибку, расположенную выше.
exit status 1 ошибка компиляции для платы Arduino
Данная ошибка возникает, если вы подключаете в скетче библиотеку, которую не установили в папку libraries. Например, не установлена библиотека ИК приемника Ардуино: fatal error: IRremote.h: No such file or directory. Как исправить ошибку? Скачайте нужную библиотеку и распакуйте архив в папку C:Program FilesArduinolibraries. Если библиотека установлена, то попробуйте скачать и заменить библиотеку на новую.
Довольно часто у новичков выходит exit status 1 ошибка компиляции для платы arduino uno /genuino uno. Причин данного сообщения при загрузке скетча в плату Arduino Mega или Uno может быть огромное множество. Но все их легко исправить, достаточно внимательно перепроверить код программы. Если в этом обзоре вы не нашли решение своей проблемы, то напишите свой вопрос в комментариях к этой статье.
missing fqbn (fully qualified board name)
Ошибка возникает, если не была выбрана плата. Обратите внимание, что тип платы необходимо выбрать, даже если вы не загружаете, а, например, делаете компиляцию скетча. В Arduino IDE 2 вы можете использовать меню выбора:
— список плат, которые подключены и были идентифицированы Arduino IDE.
— или выбрать плату и порт вручную, без подключения микроконтроллера.
Синтаксические ошибки
Первые ошибки, которые определяются отладчиком – это синтаксические ошибки. Их же легче всего исправить. Неправильный синтаксис в Arduino IDE выделяется строкой, в которой допущена неточность. Нужно разобраться – это ошибка в написании служебного слова, случайно удалена важная функция, не хватает закрывающейся скобки или неправильно отделены комментарии.
Для определения ошибки внимательно просмотрите строку-подсказку и внесите необходимые изменения. Ниже мы приведем примеры наиболее часто встречающихся синтаксических ошибок компиляции кода:
- Ошибка “expected initializer before ‘}’ token” говорит о том, что случайно удалена или не открыта фигурная скобка.
- Ошибка “a function-definition is not allowed here before ‘{‘ token” – аналогичная предыдущей и указывает на отсутствие открывающейся скобки, например, открывающих скобок в скетче только 11, а закрывающих 12.
- Уведомление об ошибке “undefined reference to “setup” получите в случае переименования или удаления функции “setup”.
- Ошибка “undefined reference to “loop” – возникает в случае удаления функции loop. Без команд этой функции компилятор запустить программу не сможет. Для устранения надо вернуть каждую из команд на нужное место в скетче.
- Ошибка “… was not declared in this scope” обозначает, что в программном коде обнаружены слова, которые написаны с ошибкой (например, которые обозначают какую-то функцию) или найдены необъявленные переменные, методы. Подобная ошибка возникает также в случае случайного удаления значка комментариев и текст, который не должен восприниматься как программа, читается IDE.
Ошибки библиотек
Большое количество ошибок возникает на уровне подключения библиотек или неправильного их функционирования. Наиболее известные:
- “fatal error: … No such file or directory”. Такое сообщение вы получите, если необходимую в скетче библиотеку вы не записали в папку libraries. Сообщение об ошибке в одном из подключенных файлов может означать, что вы используете библиотеку с ошибками или библиотеки не совместимы. Решение – обратиться к разработчику библиотеки или еще раз проверить правильность написанной вами структуры.
- “redefinition of void setup” – сообщение возникает, если автор библиотеки объявил функции, которые используются и в вашем коде. Чтобы исправить – переименуйте свои методы или в библиотеке.
Ошибки компилятора
Нестабильность в работе самого компилятора тоже могут возникать при отладке программы. Вариантов выхода из данной ситуации может быть несколько, например, установить последнюю версию компилятора. Иногда решением может быть наоборот, возвращение до более старой версии. Тогда используемая библиотека может работать корректно.
Ошибки компиляции при работе с разными платами — Uno, Mega и Nano
В Arduino можно писать программы под разные варианты микроконтроллеров. По умолчанию в меню выбрана плата Arduino/Genuino Uno. Если забудете о том что нужно указать нужную плату – в вашем коде будут ссылки на методы или переменные, не описанные в конфигурации “по умолчанию”.
Вы получите ошибку при компиляции “programmer is not responding”. Чтобы исправить ее – проверьте правильность написания кода в части выбора портов и вида платы. Для этого в Ардуино IDE в меню «Сервис» выберите плату. Аналогично укажите порт в меню “Сервис” – пункт «Последовательный порт».
Ошибка exit status 1
В среде разработки такое сообщение можно увидеть во многих случаях. И хотя в документации данная ошибка указывается как причина невозможности запуска IDE Аrduino в нужной конфигурации, на самом деле причины могут быть и другие. Для того, чтобы найти место, где скрывается эта ошибка можно “перелопатить” действительно много. Но все же стоит сначала проверить разрядность системы и доступные библиотеки.
Обновления и исправления касательно версий инструкции и ПО