|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
13.05.2013, 02:43 | #1 |
Регистрация: 13.05.2013
Сообщений: 3
|
Непонятный код
Здравствуйте!
Я начал изучать работы с файлами в С по книжке Герберта Шилдта. Там есть вот такой код. Я совершенно не понимаю подчеркнутые места. Что значат argc и argv? Откуда у них какие-то значения? И как работает условие "Вы забыли указать имя файла"? оО а где его вводить-то надо это имя? Не понятен код совершенно, помогите, пожалуйста. |
13.05.2013, 03:36 | #2 | ||
Старожил
Регистрация: 25.10.2011
Сообщений: 3,178
|
Цитата:
Код:
Код:
Цитата:
|
||
13.05.2013, 12:31 | #3 |
Форумчанин
Регистрация: 07.04.2012
Сообщений: 216
|
Какой учебник Шилдта и какая глава? ( личный интерес )
|
13.05.2013, 20:12 | #4 | |
Регистрация: 13.05.2013
Сообщений: 3
|
Вы очень хорошо постарались расписать, спасибо, но я не могу сообразить для чего нам это все нужно?
Зачем нужен аргумент командной строки? И этот массив? Цитата:
И что это за такой файл (C:\Documents\my.file)? Никогда не видел такого формата) ___________________________________ _______ И самое главное, как мне вводить имя файла? Я только запускаю exeшник свой, открывается консоль, программа отрабатывается, выводит на экран, что нет имени и закрывается. Что не так делаю и как правильно? Как мне ввести данные в эти переменные и зачем мне туда их вводить, когда есть обычные переменные ? |
|
13.05.2013, 20:13 | #5 |
Регистрация: 13.05.2013
Сообщений: 3
|
|
14.05.2013, 00:29 | #6 | |||
Старожил
Регистрация: 25.10.2011
Сообщений: 3,178
|
Цитата:
И не путайте формат файла (который относится к его "внутреннему устройству", скажем так) и расширение файла, которое по большому счёту является частью имени. То есть, ничто не мешает взять файл формата AVI и сделать ему расширение .txt. Сам файл от этого не изменится ни на йоту, и любая программа, способная открыть файл формата AVI, по-прежнему сможет его открыть. Цитата:
[Win]+[R], ввести cmd, [Enter]. Откроется окно консоли. Если программа находится не на системном диске (скажем, системный диск C:, а программа лежит в D:\Documents\Programs\ConsoleIn\), ввести букву диска, двоеточие, [Enter] (D. Ввести cd path, где path - путь к директории, в которой лежит программа (cd D:\Documents\Programs\ConsoleIn). В Windows Vista и 7 "истинный" путь к просматриваемой папке можно получить, кликнув в свободном месте в строке пути проводника, в XP и раньше он отображается там всё время. Обратите внимание, что текущая директория сменилась на указанную командой cd. Ввести имя исполняемого файла (program.exe), затем любые аргументы. Программа будет вызвана с этими аргументами. Цитата:
Когда программа запускается так, как приведено выше, то стандартный поток ввода при запуске программы связывается с вводом консоли, поэтому разница между ним и аргументами не вполне ощутима. Однако в тех случаях, когда наша программа вызывается другой программой, разница заметна: передать аргументы командной строки много легче, чем пытаться устроить ввод из стандартного потока. Далее, стандартные потоки (ввода, вывода, сообщений об ошибках) могут быть перенаправлены - то есть, при обращении к стандартному потоку ввода наша программа будет получать данные из какого-то совсем другого источника. Это достаточно старое разделение, поэтому многие вещи на него завязаны - скажем, когда Вы "открываете" файл с расширением txt (положим, D:\Documents\file.txt) двойным кликом, и если Windows знает, что файлы с расширением txt требуется открывать программой C:\Windows\System32\notepad.exe, то исполняется следующая команда: C:\Windows\System32\notepad.exe D:\Documents\file.txt То есть, запускается программа notepad, а то, какой файл надо открывать, ей передаётся в качестве аргумента командной строки. То же будет верно и если Вы напишете свою программу и скажете Windows, что хотите открывать файлы такого-то расширения с её помощью. Общее правило выглядит следующим образом: программа принимает управляющие данные (путь к обрабатываемому файлу, режим работы, дополнительные настройки) как аргументы командной строки, а обрабатываемые данные - через стандартный поток ввода. Это не железный закон, разумеется, но если у Вас нет идей лучше, стоит его придерживаться. |
|||
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Непонятный код | qwertyk | Общие вопросы C/C++ | 18 | 08.02.2013 16:15 |
Непонятный код | artem611 | Помощь студентам | 2 | 11.04.2012 00:43 |
C# непонятный код | raok | Помощь студентам | 4 | 21.05.2011 14:15 |
Непонятный код. | Вадим Буренков | Общие вопросы Delphi | 9 | 18.08.2010 17:15 |
непонятный код | Kostua | Помощь студентам | 5 | 27.04.2008 18:17 |