|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
12.05.2014, 00:45 | #1 |
Регистрация: 22.04.2014
Сообщений: 8
|
Ошибка при вводе пустой строки, язык Си
Программа должна разбивать введенную строку на слова, для последующей работы с ними. На слова разбивает, но при вводе пустой строки (т.е. просто при нажатии Enter) вылетает ошибка "Segmentation fault (core dumped)".
Можно ли это как-то исправить? Предполагается, что этот код будет подключаться к основной программе (для обработки команд), и нужно чтобы по Enter не прерывалась работа программы, а просто дублировалась строка приглашения ко вводу P.S. работа в Linux Код:
|
12.05.2014, 01:12 | #2 |
Старожил
Регистрация: 12.11.2010
Сообщений: 8,568
|
А что если просто завершить работу программы, если введена пустая строка? Либо требовать от пользователя ввести НЕПУСТУЮ СТРОКУ, если он ввёл пустую?
|
12.05.2014, 01:23 | #3 |
Регистрация: 22.04.2014
Сообщений: 8
|
Так в том то и дело, что при вводе пустой строки программа сразу же завершается в ошибкой "Segmentation fault (core dumped)". Ввод пустой строки должен быть разрешен
|
12.05.2014, 01:30 | #4 |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,342
|
Не проверял, но попробуйте:
Код:
Код:
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
|
12.05.2014, 02:26 | #5 |
Регистрация: 22.04.2014
Сообщений: 8
|
Спасибо! Второй вариант сработал. А из-за чего происходила ошибка?
|
12.05.2014, 02:34 | #6 |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,342
|
Пожалуйста.
Предположительно: sp = strtok(str, " "); - в sp оказывался NULL, так как str - пустая строка strcpy(cmdpart[i], sp); - функция пыталась разыменовать NULL Но это только предположительно, для более точного ответа нужно смотреть в дебагере.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
|
21.05.2014, 01:54 | #7 |
Регистрация: 22.04.2014
Сообщений: 8
|
всё к той же программе... как можно проверить, является ли cmdpart[i] пустым? т.е. что в него не считано слово?
например, для того чтобы объединить считанные слова? "пока в cmdpart[i] не пусто объединить "некоторая строка"+cmdpart[i] i++ " и т.д. попытки сравнения i-го элемента с пустой строкой "" или с NULL не дали результата |
21.05.2014, 02:18 | #8 |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,342
|
Код:
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
перевод строки при вводе | 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 |