![]() |
|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 22.04.2014
Сообщений: 8
|
![]()
Программа должна разбивать введенную строку на слова, для последующей работы с ними. На слова разбивает, но при вводе пустой строки (т.е. просто при нажатии Enter) вылетает ошибка "Segmentation fault (core dumped)".
Можно ли это как-то исправить? Предполагается, что этот код будет подключаться к основной программе (для обработки команд), и нужно чтобы по Enter не прерывалась работа программы, а просто дублировалась строка приглашения ко вводу P.S. работа в Linux Код:
|
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 12.11.2010
Сообщений: 8,568
|
![]()
А что если просто завершить работу программы, если введена пустая строка? Либо требовать от пользователя ввести НЕПУСТУЮ СТРОКУ, если он ввёл пустую?
|
![]() |
![]() |
![]() |
#3 |
Регистрация: 22.04.2014
Сообщений: 8
|
![]()
Так в том то и дело, что при вводе пустой строки программа сразу же завершается в ошибкой "Segmentation fault (core dumped)". Ввод пустой строки должен быть разрешен
|
![]() |
![]() |
![]() |
#4 |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,322
|
![]()
Не проверял, но попробуйте:
Код:
Код:
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись
![]() |
![]() |
![]() |
![]() |
#5 |
Регистрация: 22.04.2014
Сообщений: 8
|
![]()
Спасибо! Второй вариант сработал. А из-за чего происходила ошибка?
|
![]() |
![]() |
![]() |
#6 |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,322
|
![]()
Пожалуйста.
Предположительно: sp = strtok(str, " "); - в sp оказывался NULL, так как str - пустая строка strcpy(cmdpart[i], sp); - функция пыталась разыменовать NULL Но это только предположительно, для более точного ответа нужно смотреть в дебагере.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись
![]() |
![]() |
![]() |
![]() |
#7 |
Регистрация: 22.04.2014
Сообщений: 8
|
![]()
всё к той же программе... как можно проверить, является ли cmdpart[i] пустым? т.е. что в него не считано слово?
например, для того чтобы объединить считанные слова? "пока в cmdpart[i] не пусто объединить "некоторая строка"+cmdpart[i] i++ " и т.д. попытки сравнения i-го элемента с пустой строкой "" или с NULL не дали результата |
![]() |
![]() |
![]() |
#8 |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,322
|
![]() Код:
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись
![]() |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
перевод строки при вводе | Chugun | Общие вопросы C/C++ | 2 | 12.03.2012 15:38 |
Ошибка при вводе чисел | FennecFox | Общие вопросы C/C++ | 0 | 25.01.2011 19:23 |
Не прекращается ввод при вводе пустой строки | sunplant | Общие вопросы C/C++ | 10 | 10.06.2010 19:33 |
Ошибка при вводе даты | tools | SQL, базы данных | 6 | 05.11.2009 21:12 |
ошибка при вводе в DBEdit | Evgenii | БД в Delphi | 3 | 05.08.2009 20:39 |