Главная страница

Лекции. Основные понятия и определения


Скачать 1.94 Mb.
НазваниеОсновные понятия и определения
Дата27.03.2018
Размер1.94 Mb.
Формат файлаdocx
Имя файлаЛекции.docx
ТипКонтрольные вопросы
#39570
страница36 из 58
1   ...   32   33   34   35   36   37   38   39   ...   58

12.1. Спецификация "s" управляющей строки функций scanf и printf


Предназначена для ввода-вывода символьных строк. Напомним, что в языке C определены только строковые литералы, которые представляют собой последовательность символов, завершающуюся нулевым символом. В качестве переменных применяются массивы типа char. Все функции ввода строк добавляют конечный нулевой символ.

Ввод. Формат спецификации: % [w]s.

Поле ввода ограничивается параметром спецификации w либо символами пробел или перевод строки (клавиша Enter).

Пример.

%5s [Ивано]в // Будет введен текст, заключенный в [ ]

Замечание. Ограничитель ввода остается в потоке и будет восприниматься последующими инструкциями ввода, что может привести к некоторым неожиданным последствиям. Например, следующая за функцией scanf функция gets, у которой символ перевод строки является ограничителем, введет пустую строку.

Вывод. Формат спецификации: %[w][.d]s.

Ограничителем является конечный нулевой символ либо параметр d спецификации.

Пример. Выводимая строка имеет значение: "Привет, Коля!". На экране получим:

%s Привет, Коля!

%.6s Привет

12.2. Функции getchar и putchar


Прототип: int getchar( ); - чтение одного символа с клавиатуры.

Файл прототипа: stdio.h.

Возвращаемое значение: символ (при успешном вводе)или EOF (ошибка ввода или конец файла). Признак конца файла при вводе: символы Ctrl+z.

Прототип: int putchar(int); - вывод одного символа на экран.

Файл прототипа: stdio.h.

Возвращаемое значение: символ (успех)|EOF (ошибка).

Пример.

// Чтение строки с терминала.

// Возвращает указатель на строку и ее длину

char getline(int lim, // Максимальная длина вводимой строки

char *s){ // Вводимая строка

char c, // Вводимый символ

i;
for(i=0; i

s[ i ]=c;

}

s[ i ]='\0';

return i;

} // End getline

12.3. Функции gets и puts


Прототип: char* gets(char*); - чтение строки символов.

Файл прототипа: stdio.h.

Возвращаемое значение: указатель на введенную строку (успех) | NULL- "пустой" указатель.

Ограничитель ввода: символ перевод строки, который после ввода заменяется на конечный нулевой символ.

Пример.

char string[20];

................

gets(string);

Замечание. Можно включать в строку пробелы в отличие от спецификации s функции scanf.

Прототип: int puts(char*); - вывод на экран строки символов.

Файл прототипа: stdio.h.

Возвращаемое значение: последний выведенный символ (успех) | EOF (конец файла).

Замечание. Конечный 0 не выводится. В конец строки добавляется символ перевод строки.

12.4. Внутренняя передача данных (функции sscanf и sprintf)


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

Преобразование из символьной строки во внутреннее представление.

Прототип: int sscanf(char *buf, char *control, аргумент[, аргумент]...);

Здесь buf – исходная строка, control – управляющая строка.

Возвращаемое значение – см.функцию scanf.

Преобразование из внутреннего представления в символьную строку.

Прототип: int sprintf(char *buf, char *control, аргумент[, аргумент]...);

Файл прототипов обеих функций: stdio.h.

Возвращаемое значение: длина сформированной строки - число байтов без конечного 0, который добавляется или EOF (при ошибке).

Пример.

i=4;

a[ i ] = -37.45;

sprintf(mult, "%.5g%3s%d", a[ i ], "x**" ,i );

Результат будет иметь вид: < -37.45x**4>.


1   ...   32   33   34   35   36   37   38   39   ...   58


написать администратору сайта