-->

Основы программирования в Linux

На нашем литературном портале можно бесплатно читать книгу Основы программирования в Linux, Мэтью Нейл-- . Жанр: Программирование / ОС и Сети. Онлайн библиотека дает возможность прочитать весь текст и даже без регистрации и СМС подтверждения на нашем литературном портале bazaknig.info.
Основы программирования в Linux
Название: Основы программирования в Linux
Дата добавления: 16 январь 2020
Количество просмотров: 669
Читать онлайн

Основы программирования в Linux читать книгу онлайн

Основы программирования в Linux - читать бесплатно онлайн , автор Мэтью Нейл
В четвертом издании популярного руководства даны основы программирования в операционной системе Linux. Рассмотрены: использование библиотек C/C++ и стан­дартных средств разработки, организация системных вызовов, файловый ввод/вывод, взаимодействие процессов, программирование средствами командной оболочки, создание графических пользовательских интерфейсов с помощью инструментальных средств GTK+ или Qt, применение сокетов и др. Описана компиляция программ, их компоновка c библиотеками и работа с терминальным вводом/выводом. Даны приемы написания приложений в средах GNOME® и KDE®, хранения данных с использованием СУБД MySQL® и отладки программ. Книга хорошо структурирована, что делает обучение легким и быстрым. Для начинающих Linux-программистов

Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала

1 ... 49 50 51 52 53 54 55 56 57 ... 324 ВПЕРЕД
Перейти на страницу:

<b>#include &lt;stdio.h&gt;</b>

<b>int printf(const char *format, ...);</b>

<b>int sprintf(char *s, const char *format, ...);</b>

<b>int fprintf(FILE * stream, const char *format, ...);</b>

Функция

printf
выводит результат в стандартный вывод. Функция
fprintf
выводит результат в заданный файловый поток
stream
. Функция
sprintf
записывает результат и завершающий нулевой символ в строку
s
, передаваемую как параметр. Эта строка должна быть достаточно длинной, чтобы вместить весь вывод функции.

У семейства

printf
есть и другие члены, обрабатывающие свои аргументы различными способами. См. подробную информацию на страницах интерактивного руководства.

Обычные символы передаются в вывод без изменений. Спецификаторы преобразований заставляют функцию

printf
выбирать и форматировать дополнительные аргументы, передаваемые как параметры. Спецификаторы всегда начинаются с символа
%
. Далее приведен простой пример:

printf(&quot;Some numbers: %d, %d, and &amp;dn&quot;, 1, 2, 3);

Он порождает в стандартном выводе следующую строку.

Some numbers: 1, 2, and 3

Для вывода символа

%
следует применять последовательность
%%
, чтобы не путать его со спецификатором преобразования.

Далее перечислены наиболее часто применяемые спецификаторы преобразований:

%d
,
%i
— выводить целое как десятичное число;

,
%x
— выводить целое как восьмеричное, шестнадцатеричное число;

— выводить символ;

%s
— выводить строку;

%f
— выводить число с плавающей точкой (одинарной точности);

%e
— выводить число с двойной точностью в формате фиксированной длины;

%g
— выводить число двойной точности в общем формате.

Очень важно, чтобы число и тип аргументов, передаваемых функции

printf
, соответствовали спецификаторам преобразования в строке
format
. Необязательный спецификатор размера применяется для обозначения типа целочисленных аргументов.

Он может быть равен

h
, например,
%hd
для обозначения типа
short int
(короткие целые), или
l
, например,
%ld
для обозначения типа
long int
(длинные целые). Некоторые компиляторы могут проверять эти установки
printf
, но они ненадежны. Если вы применяете компилятор GNU gcc, можно вставить для этого в команду компиляции опцию
-Wformat
.

Далее приведен еще один пример:

char initial = 'А';

char *surname = &quot;Matthew&quot;;

double age = 13.5;

printf(&quot;Hello Mr %c %s, aged %gn&quot;, initial, surname, age);

Будет выводиться следующая информация:

Hello Mr A Matthew, aged 13.5

Вы можете добиться большего при выводе элементов с помощью спецификаторов полей. Они расширяют возможности спецификаторов преобразований, управляя расположением элементов при выводе. Обычно задается количество десятичных разрядов для числа с плавающей точкой или величина пробельных отступов, обрамляющих строку.

Спецификаторы полей задаются в виде чисел, следующих в спецификаторах преобразований непосредственно за знаком

%
. В табл. 3.5 приведены дополнительные примеры использования спецификаторов преобразований и результирующий вывод. Для большей ясности мы применяем знак вертикальной черты, чтобы показать границы вывода.

Таблица 3.5

Формат Аргумент Вывод
%10s
&quot;Hello&quot;
|     Hello|
%-10s
&quot;Hello&quot;
|Hello     |
%10d
1234
|      1234|
%-10d
1234
|1234      |
%010d
1234
|0000001234|
%10.4f
12.34
|   12.3400|
%*s
10, &quot;Hello&quot;
|     Hello|

Все приведенные примеры выводятся в поле шириной 10 символов. Обратите внимание на то, что отрицательная ширина поля означает выравнивание элемента по левому краю в пределах поля. Переменная ширина поля обозначается символом "звездочка" (

*
). В этом случае следующий аргумент применяется для задания ширины. Ведущий ноль указывает на вывод элемента с ведущими нулями. В соответствии со стандартом POSIX функция
printf
не обрезает поля; наоборот она расширяет поле, чтобы вместить в него аргумент. Например, если вы попытаетесь вывести строку большей длины, чем заданное поле, ширина поля будет увеличена (табл. 3.6).

Таблица 3.6

Формат Аргумент Вывод
%10s
&quot;HelloTherePeeps&quot;
|HelloTherePeeps|
1 ... 49 50 51 52 53 54 55 56 57 ... 324 ВПЕРЕД
Перейти на страницу:
Комментариев (0)
название