РЕЖИМ | ПОЯСНЕНИЕ |
r | Мы используем его для открытия текстового файла в режиме чтения |
w | Мы используем его для открытия или создания текстового файла в режиме записи |
a | Мы используем его, чтобы открыть текстовый файл в режиме добавления |
r+ | < td>Мы используем его, чтобы открыть текстовый файл как в режиме чтения, так и в режиме записи
w+ | Мы используем его, чтобы открыть текстовый файл как в режиме чтения, так и в режиме записи. режим записи |
a+ | Мы используем его, чтобы открыть текстовый файл как в режиме чтения, так и в режиме записи |
< td>rb Мы используем его для открытия бинарного файла в режиме чтения |
wb | Мы используем его для открытия или создания двоичный файл в режиме записи |
ab | Мы используем его для открытия двоичного файла в режиме добавления |
rb+ | Мы используем его для открытия двоичного файла в режиме чтения и записи |
wb+ | Мы используем его открыть бинарный файл в обоих ре режим чтения и записи |
ab+ | Мы используем его для открытия двоичного файла как в режиме чтения, так и в режиме записи |
тело> таблица>
6. Закрытие текстового файла в C
Мы используем функцию fclose(), чтобы закрыть уже открытый файл. Совершенно очевидно, что файл необходимо открыть, чтобы можно было выполнить операцию закрытия файла.
Здесь fpointer — это указатель, связанный с закрытием файла. Эта функция отвечает за возврат значения 0, если файл успешно закрыт. В противном случае EOF (конец файла) в случае какой-либо ошибки при закрытии файла.
7. Чтение и запись текстового файла в C
После обсуждения того, как открыть и закрыть файл, важно отметить, что в файле есть 3 типа потоков (последовательности байтов):
Операции ввода/вывода в файле помогают читать и писать в файл.
Самые простые функции, используемые при выполнении операций чтения и записи символов в файл, — это getc() и putc() соответственно.
Для чтения и записи набора данных в файл мы используем операторы fscanf() и fprintf().
Отдохните и пересмотрите концепцию операторов в C
Вот программа на C, иллюстрирующая использование fprintf() для записи текстового файла:
После успешной компиляции приведенного выше кода на системном диске будет создан текстовый файл.
Когда мы открываем текстовый файл, он будет отображать введенный в программе символ:
После понимания того, как писать в файл, давайте приступим к чтению строки.
Вот программа на C, иллюстрирующая использование fscanf() для чтения текстового файла:
Код —
Выход-
Теперь давайте попробуем понять разницу между режимом записи и режимом добавления.
Хотя на первый взгляд у них похожие функции, между ними есть некоторые различия.
Режим записи обозначается буквой "w", тогда как режим добавления обозначается буквой "a".
В режиме записи вы можете потерять данные. Когда вы запускаете свою программу во второй раз, система перезаписывает новый вывод, созданный программой, если пользователь вводит другой ввод, чем тот, который был указан в предыдущей программе. В отличие от этой ситуации, режим добавления просто добавляет больше данных к существующим данным. Таким образом, из этого обсуждения становится очевидным, что режим добавления лучше, чем режим записи.
После понимания некоторых основных операций с текстовыми файлами давайте продолжим обсуждение двоичных файлов. Мы можем открывать и закрывать двоичный файл так же, как и текстовые файлы. Разница возникает при чтении и записи бинарного файла.
8. Чтение и запись двоичного файла в C
Мы используем функции fread() и fwrite() для чтения и записи данных из двоичного файла соответственно.
Работа с двоичными файлами немного сложнее, чем с текстовыми файлами, поскольку синтаксис предполагает использование большего количества аргументов.
Обе функции fread() и fwrite() принимают для работы 4 аргумента.
Основной синтаксис для чтения двоичного файла в C:
fread(data_address, data_size, number_of_data_items, file_pointer);
Основной синтаксис для записи двоичного файла в C:
fwrite(data_address, data_size, number_of_data_items,file_pointer);
Вот программа на C, иллюстрирующая, как читать двоичный файл на C:
Код-
Выход-
Подобным образом вы можете записать содержимое в двоичный файл с помощью функции fwrite().
Вот программа на C, иллюстрирующая, как писать в двоичный файл:
Код-
Выход-
Вот как вывод файла сохраняется в текстовом файле:
Visual C++ включает в себя компилятор C, который можно использовать для создания чего угодно: от базовых консольных программ до полноценных приложений Windows Desktop, мобильных приложений и многого другого.
В этом пошаговом руководстве показано, как создать простую программу на C в стиле "Hello, World" с помощью текстового редактора, а затем скомпилировать ее в командной строке. Если вы предпочитаете работать на C++ в командной строке, см. Пошаговое руководство. Компиляция собственной программы на C++ в командной строке. Если вы хотите попробовать интегрированную среду разработки Visual Studio вместо использования командной строки, см. раздел Пошаговое руководство. Работа с проектами и решениями (C++) или Использование интегрированной среды разработки Visual Studio для разработки настольных систем C++.
Предпосылки
Для выполнения этого пошагового руководства необходимо установить либо Visual Studio и дополнительные компоненты Visual C++, либо инструменты сборки для Visual Studio.
Visual Studio — это мощная интегрированная среда разработки, которая поддерживает полнофункциональный редактор, менеджеры ресурсов, отладчики и компиляторы для многих языков и платформ. Сведения об этих функциях, а также о том, как загрузить и установить Visual Studio, включая бесплатную версию Visual Studio Community, см. в разделе Установка Visual Studio.
Версия Visual Studio Инструменты сборки для Visual Studio устанавливает только набор инструментов командной строки, компиляторы, инструменты и библиотеки, необходимые для сборки программ C и C++. Он идеально подходит для создания лабораторий или занятий в классе и относительно быстро устанавливается. Чтобы установить только набор инструментов командной строки, загрузите Инструменты сборки для Visual Studio со страницы загрузок Visual Studio и запустите программу установки. В установщике Visual Studio выберите рабочую нагрузку инструментов сборки C++ и нажмите "Установить".
Прежде чем вы сможете создать программу C или C++ в командной строке, вы должны убедиться, что инструменты установлены и что вы можете получить к ним доступ из командной строки. Visual C++ имеет сложные требования к среде командной строки для поиска инструментов, заголовков и библиотек, которые он использует. Вы не можете использовать Visual C++ в обычном окне командной строки без некоторой подготовки. Вам потребуется окно командной строки разработчика, которое представляет собой обычное окно командной строки, в котором установлены все необходимые переменные среды. К счастью, Visual C++ устанавливает ярлыки для запуска командных строк разработчика, в которых среда настроена для сборки из командной строки. К сожалению, названия ярлыков командной строки разработчика и их расположение различаются почти во всех версиях Visual C++ и в разных версиях Windows. Ваша первая задача пошагового руководства — найти правильный ярлык для использования.
Ярлык командной строки разработчика автоматически устанавливает правильные пути для компилятора и инструментов, а также для всех необходимых заголовков и библиотек. Некоторые из этих значений различаются для каждой конфигурации сборки. Вы должны установить эти значения среды самостоятельно, если вы не используете ни один из ярлыков. Дополнительные сведения см. в разделе Использование набора инструментов MSVC из командной строки. Поскольку среда сборки сложна, мы настоятельно рекомендуем вам использовать ярлык командной строки разработчика, а не создавать свой собственный.
Эти инструкции различаются в зависимости от используемой версии Visual Studio. Чтобы просмотреть документацию для предпочитаемой версии Visual Studio, используйте элемент управления выбора версии. Он находится в верхней части оглавления на этой странице.
Откройте командную строку разработчика в Visual Studio 2022
Если вы установили Visual Studio 2022 в Windows 10 или более поздней версии, откройте меню "Пуск" и выберите "Все приложения". Затем прокрутите вниз и откройте папку Visual Studio 2022 (не приложение Visual Studio 2022). Выберите Командная строка разработчика для VS 2022, чтобы открыть окно командной строки.
Откройте командную строку разработчика в Visual Studio 2019
Если вы установили Visual Studio 2019 в Windows 10 или более поздней версии, откройте меню "Пуск" и выберите "Все приложения". Затем прокрутите вниз и откройте папку Visual Studio 2019 (не приложение Visual Studio 2019). Выберите Командная строка разработчика для VS 2019, чтобы открыть окно командной строки.
Откройте командную строку разработчика в Visual Studio 2017
Если вы установили Visual Studio 2017 в Windows 10 или более поздней версии, откройте меню "Пуск" и выберите "Все приложения". Затем прокрутите вниз и откройте папку Visual Studio 2017 (не приложение Visual Studio 2017). Выберите Командная строка разработчика для VS 2017, чтобы открыть окно командной строки.
Откройте командную строку разработчика в Visual Studio 2015
Если вы установили Microsoft Visual C++ Build Tools 2015 в Windows 10 или более поздней версии, откройте меню "Пуск" и выберите "Все приложения". Затем прокрутите вниз и откройте папку Visual C++ Build Tools. Выберите Visual C++ 2015 x86 Native Tools Command Prompt, чтобы открыть окно командной строки.
Если вы используете другую версию Windows, найдите в меню "Пуск" или на начальной странице папку инструментов Visual Studio, содержащую ярлык командной строки разработчика. Вы также можете использовать функцию поиска Windows для поиска «командной строки разработчика» и выбрать ту, которая соответствует установленной версии Visual Studio. Используйте ярлык, чтобы открыть окно командной строки.
Затем убедитесь, что командная строка разработчика Visual C++ настроена правильно. В окне командной строки введите cl (или CL , регистр не имеет значения для имени компилятора, но имеет значение для параметров компилятора). Вывод должен выглядеть примерно так:
В зависимости от версии Visual C++ и установленных обновлений могут быть различия в текущем каталоге или номере версии. Если приведенный выше вывод похож на то, что вы видите, значит, вы готовы создавать программы C или C++ в командной строке.
Если вы получаете сообщение об ошибке, например "'cl' не распознается как внутренняя или внешняя команда, исполняемая программа или пакетный файл", ошибка C1034 или ошибка LNK1104 при запуске команды cl, то либо вы не используете командная строка разработчика, или что-то не так с вашей установкой Visual C++. Прежде чем продолжить, вы должны устранить эту проблему.
Если вы не можете найти ярлык командной строки разработчика или получаете сообщение об ошибке при вводе cl , возможно, у вас возникла проблема с установкой Visual C++. Если вы используете Visual Studio 2017 или более позднюю версию, попробуйте переустановить разработку рабочего стола с рабочей нагрузкой C++ в установщике Visual Studio. Дополнительные сведения см. в разделе Установка поддержки C++ в Visual Studio. Или переустановите инструменты сборки со страницы загрузок Visual Studio. Не переходите к следующему разделу, пока не сработает команда cl. Дополнительные сведения об установке и устранении неполадок Visual Studio см. в разделе Установка Visual Studio.
В зависимости от версии Windows на компьютере и конфигурации безопасности системы вам может потребоваться щелкнуть правой кнопкой мыши, чтобы открыть контекстное меню для ярлыка командной строки разработчика, а затем выбрать «Запуск от имени администратора», чтобы успешно собрать и запустить программу, которая вы создаете, следуя этому пошаговому руководству.
Создайте исходный файл C и скомпилируйте его в командной строке
В окне командной строки разработчика введите cd c:\, чтобы изменить текущий рабочий каталог на корень вашего диска C:. Затем введите md c:\hello, чтобы создать каталог, а затем введите cd c:\hello, чтобы перейти в этот каталог. Этот каталог будет содержать ваш исходный файл и скомпилированную программу.
Введите notepad hello.c в командной строке разработчика. В появившемся диалоговом окне предупреждения Блокнота выберите Да, чтобы создать новый файл hello.c в рабочем каталоге.
В Блокноте введите следующие строки кода:
В строке меню Блокнота выберите «Файл» > «Сохранить», чтобы сохранить hello.c в рабочем каталоге.
Вернитесь в окно командной строки разработчика. Введите dir в командной строке, чтобы просмотреть содержимое каталога c:\hello. Вы должны увидеть исходный файл hello.c в списке каталогов, который выглядит примерно так:
Даты и другие данные на вашем компьютере будут отличаться. Если вы не видите файл с исходным кодом, привет.c убедитесь, что вы перешли в созданный вами каталог c:\hello, а в Блокноте убедитесь, что вы сохранили исходный файл в этом каталоге. Также убедитесь, что вы сохранили исходный код с расширением имени файла .c, а не с расширением .txt.
Чтобы скомпилировать программу, введите cl hello.c в командной строке разработчика.
Вы можете увидеть имя исполняемой программы hello.exe в строках выходной информации, отображаемой компилятором:
Если вы получаете сообщение об ошибке, например "'cl' не распознается как внутренняя или внешняя команда, исполняемая программа или пакетный файл", ошибка C1034 или ошибка LNK1104, командная строка вашего разработчика настроена неправильно. Чтобы узнать, как решить эту проблему, вернитесь к разделу Открытие командной строки разработчика.
Если вы получаете другую ошибку или предупреждение компилятора или компоновщика, просмотрите исходный код, чтобы исправить все ошибки, затем сохраните его и снова запустите компилятор. Для получения информации о конкретных ошибках используйте поле поиска в верхней части этой страницы, чтобы найти номер ошибки.
Чтобы запустить программу, введите hello в командной строке.
Программа отображает этот текст, а затем завершает работу:
Поздравляем, вы скомпилировали и запустили программу C с помощью командной строки.
Дальнейшие шаги
Этот пример "Hello, World" настолько прост, насколько это возможно для программы на C. Реальные программы имеют файлы заголовков и другие исходные файлы, связываются с библиотеками и выполняют полезную работу.
Вы можете использовать шаги, описанные в этом пошаговом руководстве, для создания собственного кода C вместо того, чтобы вводить показанный пример кода. Вы также можете создать множество примеров программ кода C, которые вы найдете в других местах. Чтобы скомпилировать программу с дополнительными файлами исходного кода, введите их все в командной строке, например:
cl файл1.c файл2.c файл3.c
Компилятор выводит программу с именем file1.exe. Чтобы изменить имя на program1.exe, добавьте параметр компоновщика /out:
cl file1.c file2.c file3.c /link /out:program1.exe
Чтобы автоматически обнаруживать больше ошибок программирования, мы рекомендуем вам компилировать с параметром уровня предупреждения /W3 или /W4:
cl /W4 файл1.c файл2.c файл3.c /ссылка /out:program1.exe
Компилятор cl.exe имеет гораздо больше параметров, которые можно применять для сборки, оптимизации, отладки и анализа кода. Для быстрого списка введите cl /? в командной строке разработчика. Вы также можете скомпилировать и связать отдельно и применить параметры компоновщика в более сложных сценариях сборки. Дополнительные сведения о параметрах компилятора и компоновщика и их использовании см. в справочнике по сборке C/C++.
Вы можете использовать NMAKE и make-файлы или MSBuild и файлы проекта для настройки и сборки более сложных проектов в командной строке. Дополнительные сведения об использовании этих инструментов см. в справочнике NMAKE и MSBuild.
Языки C и C++ похожи, но не одинаковы. Компилятор Microsoft C/C++ (MSVC) использует основное правило, чтобы определить, какой язык использовать при компиляции кода. По умолчанию компилятор MSVC обрабатывает все файлы, заканчивающиеся на .c, как исходный код C, а все файлы, заканчивающиеся на .cpp, как исходный код C++. Чтобы заставить компилятор обрабатывать все файлы как C независимо от расширения имени файла, используйте параметр компилятора /TC.
MSVC совместим со стандартами ANSI C89 и ISO C99, но не соответствует им строго. В большинстве случаев переносимый код C будет компилироваться и работать, как и ожидалось. Компилятор обеспечивает дополнительную поддержку изменений в ISO C11/C17. Для компиляции с поддержкой C11/C17 используйте флаг компилятора /std:c11 или /std:c17 . Для поддержки C11/C17 требуется Windows SDK 10.0.20201.0 или более поздней версии. Рекомендуется Windows SDK 10.0.22000.0 или более поздней версии. Вы можете загрузить последнюю версию SDK со страницы Windows SDK. Дополнительные сведения и инструкции по установке и использованию этого пакета SDK для разработки C см. в статье Установка поддержки C11 и C17 в Visual Studio.
Некоторые библиотечные функции и имена функций POSIX не поддерживаются MSVC. Функции поддерживаются, но предпочтительные имена изменились. Дополнительные сведения см. в разделе Функции безопасности в CRT и предупреждение компилятора (уровень 3) C4996.
Компьютеры не понимают человеческие языки. Фактически, на самом низком уровне компьютеры понимают только последовательности чисел, представляющие операционные коды (коды операций для краткости). С другой стороны, людям было бы очень сложно писать программы в терминах кодов операций. Поэтому были изобретены языки программирования, чтобы облегчить людям написание компьютерных программ.
Языки программирования предназначены для чтения и понимания людьми. Программа (исходный код) должна быть переведена на машинный язык, чтобы компьютер мог выполнить программу (поскольку компьютер понимает только машинный язык). То, как происходит этот перевод, зависит от того, является ли язык программирования компилируемым или интерпретируемым языком.
Компилируемые языки (например, C, C++)
Следующее иллюстрирует процесс программирования для скомпилированного языка программирования.
Компилятор берет программный код (исходный код) и преобразует исходный код в модуль машинного языка (называемый объектным файлом). Другая специализированная программа, называемая компоновщиком, объединяет этот объектный файл с другими ранее скомпилированными объектными файлами (в частности, модулями времени выполнения) для создания исполняемого файла. Этот процесс изображен на схеме ниже. Нажмите Начальная сборка, чтобы увидеть анимацию создания исполняемого файла. Щелкните Запустить исполняемый файл, чтобы имитировать запуск уже созданного исполняемого файла. Нажмите «Перестроить», чтобы имитировать перестроение исполняемого файла.
Исходная сборка Запустить исполняемый файл Rebuild
Таким образом, для скомпилированного языка преобразование исходного кода в исполняемый код происходит до запуска программы. Этот процесс сильно отличается от того, что происходит в интерпретируемом языке программирования.
Это несколько упрощено, так как многие современные программы, созданные с использованием скомпилированных языков, используют динамически подключаемые библиотеки или общие библиотеки. Поэтому для запуска исполняемого файла могут потребоваться эти динамические связанные библиотеки (Windows) или общие библиотеки (Linux, Unix).
Интерпретируемые языки программирования (например, Python, Perl)
Для интерпретируемого языка этот процесс отличается. Вместо перевода исходного кода на машинный язык до создания исполняемого файла интерпретатор преобразует исходный код на машинный язык во время работы программы. Это показано ниже:
В интерпретируемых языках используется специальная программа, называемая интерпретатором, которая преобразует исходный код, объединяется с библиотеками времени выполнения и выполняет полученные машинные инструкции во время выполнения. В отличие от скомпилированного языка, здесь нет предварительно скомпилированной программы для запуска. Процесс преобразования и объединение с библиотеками времени выполнения происходит каждый раз, когда запускается программа на интерпретируемом языке. Вот почему программы, написанные на скомпилированных языках, работают быстрее, чем аналогичные программы, написанные на интерпретируемых языках. Нажмите Start, чтобы запустить симуляцию интерпретируемой программы. Нажмите «Перезапустить», если хотите снова запустить симуляцию.
Каждый раз, когда запускается интерпретируемая программа, интерпретатор должен преобразовывать исходный код в машинный код, а также извлекать библиотеки времени выполнения. Этот процесс преобразования заставляет программу работать медленнее, чем сопоставимая программа, написанная на скомпилированном языке.
Поскольку интерпретатор выполняет преобразование исходного языка в машинный во время выполнения программы, интерпретируемые языки обычно приводят к тому, что программы выполняются медленнее, чем скомпилированные программы. Но взамен часто получается, что интерпретируемые языки часто не зависят от платформы, поскольку для каждой операционной системы можно использовать разные интерпретаторы.
А теперь кое-что другое. Java
Язык программирования Java не вписывается ни в модели компилируемого языка, ни в модели интерпретируемого языка. Это показано на рисунке ниже.
Компилятор Java (javac) преобразует исходный код в байт-код. Байт-код — это своего рода средний машинный язык. Этот файл байт-кода (файл .class) можно запустить в любой операционной системе с помощью интерпретатора Java (java) для этой платформы. Интерпретатор называется виртуальной машиной. Таким образом, Java является примером языка программирования для виртуальных машин.
Языки виртуальных машин были созданы как компромисс между компилируемыми и интерпретируемыми языками. В идеальных условиях программы на языке виртуальной машины работают ближе по скорости к программам на скомпилированном языке, но обладают независимостью от платформы программ на интерпретируемом языке.
Способ, которым языки программирования виртуальных машин получают часть скорости компилируемых языков, заключается в том, что исходный код пропускается через компилятор для создания байт-кода. Это преобразование происходит до запуска программы. Способ, которым языки виртуальных машин достигают своей переносимости (независимости от платформы), заключается в наличии разных интерпретаторов для каждой поддерживаемой операционной системы. Этот интерпретатор связывает правильные библиотеки времени выполнения для каждой операционной системы. Скомпилированный байт-код представляет собой средний машинный язык, который будет работать без изменений с любым интерпретатором виртуальной машины для этого языка. Этот процесс проиллюстрирован далее. У нас есть компилятор, который преобразует исходный код в байт-код. Это можно смоделировать, нажав кнопку Compile.После создания байт-кода этот же байт-код можно использовать без каких-либо изменений в любой операционной системе, имеющей интерпретатор виртуальной машины для языка программирования. Обратите внимание, что каждый из интерпретаторов виртуальных машин имеет разный код библиотеки времени выполнения, поскольку каждая операционная система имеет разные библиотеки времени выполнения. Вот как язык виртуальной машины решает проблемы зависимости от платформы. Нажмите «Запустить Windows», «Запустить Mac OSX» или «Запустить Linux», чтобы имитировать запуск программы в любой из этих операционных систем.
Читайте также: