Направления программирования. История создания языка Си. Особенности языка, страница 5

Форматная строка содержит спецификацию формата, по одной для каждого вводимого аргумента. Аргумент должен быть указателем на переменную того типа, который указан в соответствующей спецификации.

Формат спецификации:

%[<ширина>][h/l/L]<символ типа>

Самая простая спецификация: % <символ типа>

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

Пример:

scanf (“%d”,&x);    Будет считано число  10000

Если scanf (“%3d”, &x);  Будут считаны только 3 символа (число 100), т.к. указана ширина 3.

& - операция адресации – унарная операция, вырабатывающая адрес своего операнда, если она не указана результат не определен.

Пример:

а) scanf(“%dabc%f”,&x,&y);

Не является полем спецификации.

12  abc  12   ,    иначе не определено.

                

x           y  б) scanf(“%d/%d/%d”,&d,&v,&g);

1/3/1998

Замечание: Если форматная строка (и у scanf, и у printf) содержит меньше спецификаций, чем указано аргументов, лишние аргументы игнорируются. Если спецификаций больше, чем аргументов, результат будет неопределенным.

п.4.Директивы препроцессора.

Исходный текст программы

 
 


Directory (Рабочий каталог)

                                                                                   name.cpp            

 


*.h          

                                                                                   

Полный текст праграммы

 
                                                                                               Include directory 

name.cpp                                                              Процесс построения

Библиотечные файлы

 

Исполняемая программа

 

компоновщик

Linker

 

Объектный код программы

 

компилятор

(compiler)

 
                                                                                                                                            исполняемого файла.

name.obj

Output directory

Library directory         

name.exe

Output directory

Компилятор Си / Си ++ работает в два прохода. Первый проход осуществляет процессор компилятора. Процессор обрабатывает директивы #  include  и # define.

п. 4.1. Include  

# include <имя файла1.расширение>         

# include <имя файла2.расширение>

Когда процессор встречает директиву include,  например # include <stdio.h>, то в программу на место оператора # include вставлен фрагмент содержащейся в файле  stdio.h, этот файл называется файлом заголовка. Файлы заголовка могут содержать определение для именованных констант, идентификаторы прототипы функций, перечисляемые типы, определения структур и операторы (определения типов-typedef).

Если файл заголовка указан в угловых скобках <>, то поиск файла осуществляется в каталоге INCLUDE. Если имя файла указано в кавычках, то поиск осуществляется сначала в текущем каталоге, затем в каталоге INCLUDE. Если файл не будет найден, то выдается сообщение об ошибке.