русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Функции для вывода в поток stdout


Дата добавления: 2013-12-23; просмотров: 1701; Нарушение авторских прав


Стандартные потоки ввода-вывода

Для связи потока с внешним устройством в файле stdio.h определена структура типа FILE, также определены следующие стандартные указатели на структуру типа FILE:

- stdin – стандартный поток ввода, по умолчанию клавиатура;

- stdout – стандартный поток вывода, по умолчанию монитор (консольное окно);

- stderr – стандартное устройство вывода сообщений об ошибках, по умолчанию монитор (консольное окно);

- stdaux – стандартный последовательный порт;

- stdprn – стандартный принтер.

Потоки stderr и stdaux – не буферизированы, остальные буферизированы.

 

Ниже представлены сокращенные заголовки некоторых функций для вывода в стандартный поток stdout, связанный с экраном монитора (консольным окном).

Вывод (печать) символа:

int putchar(int c);

параметр c задает код печатаемого символа, функция возвращает код символа.

Пример вызова:

putchar(‘A’);

Вывод (печать) строки:

int puts(const char * s);

s – указатель на строку, строка заканчивается символом с кодом 0, при выводе строки на печать в конец добавляется \n (переход на новую строчку), возвращаемое значение - код последнего символа, всегда \n или значение EOF в случае ошибки. EOF (End Of File) – константа, объявленная в заголовочном файле stdio.h, ее значение равно -1.

Пример вызова:

puts(“Hello world”);

Вывод данных в соответствии с заданным форматом (форматированный вывод):

int printf(const char *format, …);

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



Шаблон преобразования в строке всегда начинается с символа «%». Формат шаблона преобразования:

%[flags][width][.prec][h:l:L]type

flags может быть одним из символов:

«-» - надпись выравнивается по левому краю (по умолчанию по правому),

«+» - числу должен предшествовать знак (перед положительным числом ставится знак «+»),

«#» - случай будет рассмотрен ниже, после разбора поля type;

width – целая константа, задает минимальную ширину поля вывода в символах;

prec – целая константа, задает максимальное число выводимых символов, или число цифр после точки при выводе вещественных чисел;

h:l:L – префиксы используются для работы с целыми или вещественными значениями, чтобы показать, что аргумент short, long (double);

type - определяет тип аргумента и формат его вывода, возможные значения это символы:

«d», «i» - тип int, вывод целого в десятичной системе счисления;

«o» - тип int, вывод целого в восьмеричной системе счисления (без 0 впереди);

«x», «X» - тип int, вывод целого в шестнадцатеричной системе счисления (без 0x или 0X впереди) c применением соответственно цифр abcdef и ABCDEF;

«u» - тип unsigned int, вывод целого без знака в десятичной системе счисления;

«c» - тип int (к нему приводится тип char), вывод отдельного символа, символ задается своим кодом;

«s» - тип char *, вывод символов строки, строка должна заканчиваться символом с кодом 0;

«f» - тип double, вывод вещественного в форме с точкой;

«e», «E» - тип double, вывод вещественного в форме со знаком экспоненты (печатается символ e или E);

«g», «G» - тип double, использует более короткий из форматов %е/%E или %f;

«p» - тип void *, печать значения указателя;

«%» - преобразование аргументов не выполняется, печатается символ «%».

Рассмотрим теперь назначение в качестве флага символа «#», символ используется с некоторыми типами аргументов. Поставленный перед кодами g, G, f, e и Е, он гарантирует наличие десятичной точки даже в случае отсутствия десятичных цифр после точки. Если поставить символ «#» перед кодами формата х и X, то шестнадцатеричное число будет выведено с префиксом или . Если же его поставить перед форматом «о», то восьмеричное число будет выведено с префиксом 0.

Примеры использования функции:

#include <stdio.h>

void main()

{

double x=10.55, y=-12.333;

int a1=10, a2=20;

char Str[]="Hello world";

char Ch='A';

printf("x=%fy=%fa1=%da2=%d", x, y, a1, a2);

// Печатается x=10.550000y=12.333000a1=10a2=20

printf("\nx=%8.2fy=%-8.2fa1=%+4da2=%3d", x, y, a1, a2);

// Печатается x= 10.55y=-12.33 a1= +10a2= 20

printf("\n%s %c %%", Str, Ch); // Печатается Hello world A %

}

 

 

8.4. Функции для считывания из потока stdin

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

Чтение символа:

int getchar();

функция возвращает код символа. Пример вызова:

char Ch;

Ch=getchar();

Чтение строки символов:

char * gets(char * s);

s – указатель на массив, куда записывается строка, строка читается пока во входном потоке не появится символ «\n» (на клавиатуре нажата клавиша «Enter»), при этом в строку записывается символ с кодом 0, возвращаемое значение адрес строки или NULL в случае ошибки.

Пример вызова:

char Str[64];

printf(“Введите строку символов:”); gets(Str);

Считывание данных и запись их в переменные в соответствии с заданным форматом:

int scanf(const char * format, …);

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

Шаблон преобразования начинается с символа «%», формат шаблона преобразования:

%[*][width][h:l:L]type

«*» - необязательный символ, в этом случае поле сканируется, но в память не записывается, используется для пропуска полей;

width – целая константа определяет максимальное число символов, считанных из входного потока;

[h:l:L] - то же самое, что и в printf;

type - определяет тип аргумента и его формат, возможные значения это символы:

«d» - тип int * (при вводе в качестве параметра передается адрес переменной – передача параметра по указателю), целая переменная в десятичной системе счисления;

«i» - тип int *, целое может вводится в десятичной, восьмеричной (0 в начале) или шестнадцатеричной (0x или 0X в начале) системах счисления;

«o» - тип int *, целая переменная в восьмеричной системе счисления (с нулем или без нуля впереди);

«x», «X» - тип int *, целая переменная в шестнадцатеричной системе счисления (с или без 0x/0X впереди);

«u» - тип unsigned int *, целая переменная в десятичной системе счисления без знака;

«c» - тип char *, ввод отдельного символа;

«s» - тип char *, ввод строки, автоматически в конец строки (массива символов) записывается символ с кодом 0, следует отметить, что строка считывается из входного потока до любого символа разделителя, включая «пробел»;

«f», «e», «E», «g», «G» - тип float *, при вводе эти символы эквивалентны, ввод вещественного в форме с точкой или со знаком экспоненты;

«%» - присваивание не выполняется, просто в строке символ «%», обозначает, что во входном потоке должен быть символ «%».

Примеры использования функции:

#include <stdio.h>

void main()

{

float x;

int a;

char Ch;

double X;

char Str[64];

printf("x, a, Ch: ");

scanf("%f %d %c", &x, &a, &Ch);

// Надо вводить значения через пробелы как в строке format

printf("x=%f a=%d Ch=%c", x, a, Ch);

printf("\nX="); scanf("%lf", &X); // Ввод типа double

printf("Str: "); scanf("%s", Str); // Ввод строки

printf("propusk: "); scanf("%*d.%d", &a);

// Если в потоке вводится 10.12 то в a запишется 12

printf("X=%f Str: %s a=%d", X, Str, a);

}

 



<== предыдущая лекция | следующая лекция ==>
Общие сведения о вводе-выводе | Открытие файла


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.005 сек.