|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
08.12.2011, 23:06 | #11 | |
Старожил
Регистрация: 02.01.2011
Сообщений: 3,323
|
Цитата:
|
|
08.12.2011, 23:21 | #12 |
Форумчанин
Регистрация: 16.09.2011
Сообщений: 114
|
Условие (c = *++argv[0]) выполняется всегда, т.к. это не проверка, а присваивание.
|
08.12.2011, 23:45 | #13 |
Форумчанин
Регистрация: 16.09.2011
Сообщений: 114
|
думаю надо так
Код:
|
09.12.2011, 10:07 | #14 | |
Старожил
Регистрация: 02.01.2011
Сообщений: 3,323
|
> to JuniorProger
Цитата:
Код:
Последний раз редактировалось 8Observer8; 09.12.2011 в 10:10. |
|
09.12.2011, 10:50 | #15 |
Software Engineer
Участник клуба
Регистрация: 07.04.2007
Сообщений: 1,618
|
ТС, о чем вы вообще говорите? Пример из книги, без всяких исправлений, прекрасно компилируется.
http://codepad.org/FCILMdmk Вы можете объяснить, что вас конкретно не устраивает.
Мужество есть лишь у тех, кто ощутил сердцем страх, кто смотрит в пропасть, но смотрит с гордостью в глазах. (с) Ария
|
09.12.2011, 11:09 | #16 | ||
Старожил
Регистрация: 02.01.2011
Сообщений: 3,323
|
> to Blade
Цитата:
Цитата:
Я ещё попробовал заменить строку: int main (int argc, char* argv[]) { на строку: int main (int argc, char** argv) { Всё равно не работает. Последний раз редактировалось 8Observer8; 09.12.2011 в 11:24. |
||
09.12.2011, 11:50 | #17 |
Старожил
Регистрация: 02.01.2011
Сообщений: 3,323
|
Я нашёл эту книгу на английском. Пример работает. Пока не понял почему работает и где была ошибка.
Код:
|
09.12.2011, 12:23 | #18 |
Старожил
Регистрация: 02.01.2011
Сообщений: 3,323
|
Всем, спасибо! Тему можно закрывать. Понял в чём ошибка.
Надо заменить строку: if ((strstr(line, argv[argc]) > 0)) { На строку: if ((strstr(line, *argv) != NULL) != except) { |
09.12.2011, 16:03 | #19 |
Старожил
Регистрация: 02.01.2011
Сообщений: 3,323
|
Поторопился я с закрытием темы. Остались "непонятки". Поясните кто-нибудь, пожалуйста, почему конструкция (*++argv)[0] (из предыдущего кода) работает, а по-моему не должна. Вот пример, где она не работает:
Код:
|
09.12.2011, 21:11 | #20 |
Форумчанин
Регистрация: 16.09.2011
Сообщений: 114
|
Что ты хочешь получить этой конструкцией (*++argv)[0] ?
Если надо букву b, то надо сделать так *(++argv[0]) или *++argv[0] (первый вариант понятнее). Если число 3, то *(++(++argv[1])) или *++(++argv[1]). Т.е. сначала выбираешь элемент массива argv: argv[0] = "abc" (указатель на букве а) , argv[1] = "123" (указатель на цифре 1). Затем сдвигаешь указатель операцией ++: ++argv[0] = "bc" (указатель перешел на b), ++(++argv[0]) = "c"(указатель перешел на с), (++argv[1]) = "23". Если нужно получить конкретное значение, например 2, то добавляешь * : *(++argv[1]) = "2". Думаю понятно объяснил. Последний раз редактировалось JuniorProger; 10.12.2011 в 21:06. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Ошибка при установке 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 |