|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
08.12.2011, 20:20 | #1 |
Старожил
Регистрация: 02.01.2011
Сообщений: 3,323
|
Ошибка в примере K&R
Доброго времени суток! Помогите, пожалуйста, отладить пример из книги Кернигана и Ритчи. Никак не могу сообразить, как заставить его работать.
Вот пример из книги, без изменений: Код:
1) Заменил строку: while (c == *++argv[0]); на: while (c = *++argv[0]); 2) Заметил, что ключ 'x' не обрабатывается, но это ерунда, я исправил. 3) Не смог найти ошибку. Предполагаю, что она кроется в отмеченной красным строке. Ведь нельзя же скажем объявить массив int a[10] и произвести операцию: ++a. А здесь это проделали. Как записать правильно? Заранее спасибо всем, кто откликнется на просьбу: помочь разобраться. |
08.12.2011, 21:00 | #2 | |
Software Engineer
Участник клуба
Регистрация: 07.04.2007
Сообщений: 1,618
|
Цитата:
Начните с того, что именно у вас не работает?
Мужество есть лишь у тех, кто ощутил сердцем страх, кто смотрит в пропасть, но смотрит с гордостью в глазах. (с) Ария
Последний раз редактировалось Blade; 08.12.2011 в 21:03. |
|
08.12.2011, 21:19 | #3 |
Форумчанин
Регистрация: 16.09.2011
Сообщений: 114
|
У меня компилятор ругается на strstr(line, MAXLINE). Говорит, что не может найти функцию с подходящими параметрами. Оно и понятно. Посмотри объявление функции. А почему в вариантах для switch (c) символы типа case 'x' ? Переменная с объявлена как int. И еще, разве хоть раз выполнится условие (c == *++argv[0])? Переменная с объявлена как int.
Последний раз редактировалось JuniorProger; 08.12.2011 в 21:22. |
08.12.2011, 22:22 | #4 | ||||
Старожил
Регистрация: 02.01.2011
Сообщений: 3,323
|
> to Blade
Я нашёл это место в книге. Написано, что эта операция не разрешена! Я даже попробовал сейчас: Код:
error C2105: для "++" требуется левостороннее значениe > to JuniorProger Цитата:
Цитата:
Цитата:
Цитата:
Вот исправленный код (кроме except, пока он не нужен), компилится нормально, но всё равно ошибка возникает на этапе выполнения. Код:
Последний раз редактировалось 8Observer8; 08.12.2011 в 22:33. |
||||
08.12.2011, 22:30 | #5 |
Форумчанин
Регистрация: 16.09.2011
Сообщений: 114
|
Ну а как насчет того, что int c ?
|
08.12.2011, 22:36 | #6 |
Старожил
Регистрация: 02.01.2011
Сообщений: 3,323
|
Я успел раньше отредактировать Так точно можно, я всегда так делаю и авторы рекомендуют.
Думаю, косяк в этой записи: (*++argv)[0]. Не нравится она мне. Последний раз редактировалось Stilet; 08.12.2011 в 23:10. |
08.12.2011, 22:40 | #7 |
Форумчанин
Регистрация: 16.09.2011
Сообщений: 114
|
Чет я тогда не понимаю. Как он в int найдет 'x' или 'n'? Он всегда будет выходить на default (наверное).
Так он ошибку выдает? Попробуй так *(++argv[0]) Последний раз редактировалось Stilet; 08.12.2011 в 23:12. |
08.12.2011, 22:48 | #8 | ||
Старожил
Регистрация: 02.01.2011
Сообщений: 3,323
|
Цитата:
Код:
Цитата:
|
||
08.12.2011, 22:52 | #9 |
Форумчанин
Регистрация: 16.09.2011
Сообщений: 114
|
А что вообще делает программа? Я в код не вникал. Разъясни поподробнее.
Действительно можно, но я не видел чтобы кто-то так рекомендовал делать. По-моему это только ухудшает читаемость программы и создает путанницу. Лучше так не делать. Последний раз редактировалось Stilet; 08.12.2011 в 23:17. |
08.12.2011, 23:04 | #10 | |
Старожил
Регистрация: 02.01.2011
Сообщений: 3,323
|
Цитата:
Ключи: -x все строки, кроме образца -n ставить номер перед выводимой строкой Ну проще на примерах объяснить: Пример 1: find abc Запрос(введите строки): abc1344 dfdffdfs ererrer dsfabc344 Результат: abc1344 dsfabc344 Пример 2: find -x -n abc Запрос(введите строки): abc1344 dfdffdfs ererrer dsfabc344 Результат: 2: dfdffdfs 3: ererrer Предыдущий можно ещё и так запускать Пример 2(перестановка и объединение ключей): find -nx abc Последний раз редактировалось 8Observer8; 09.12.2011 в 10:12. |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Ошибка при установке KOL&MSK | DKENT | Компоненты Delphi | 0 | 21.09.2011 10:36 |
Ошибка c AnsiChar & Char | Яр|/||< (^_^) | Общие вопросы Delphi | 3 | 19.02.2010 21:22 |
TForm & TImage & PNG & Прозрачность | delphi_beginner | Общие вопросы Delphi | 7 | 19.09.2009 08:46 |
EMS InterBase & FireBird Manager 3 ошибка создания Базы данных | Gilio | БД в Delphi | 2 | 08.05.2009 15:59 |