Теория вычислительных процессов и структур — страница 6

  • Просмотров 6044
  • Скачиваний 318
  • Размер файла 78
    Кб

·        pdefault */ p_use = (prompt != NULL) ? prompt : pdefault; /* Бесконечный цикл до получения правильного ответа */ for (;;) { /* Выводит приглашение */ printf (“%s >”, p_use ); if (fgets (buf, ANSWSZ, stdin) = = NULL) return EOF; /* Удаляет пробельные символы */ for (p = buf; isspace (*p); p++) ; switch (*p) { case ‘Y’: case ‘y’: return (YES); case ‘N’: case ‘n’: return (NO); default: printf (“ %s ”, error); } } } Обратными процедурами для gets и fgets будут соответственно процедуры puts и fputs: # include <stdio.h> int puts (const char *string); int fputs (const char

*string, FILE *outf); Процедура puts записывает все символы (кроме завершающего нулевого символа) из строки string на стандартный вывод (stdout). Процедура fputs записывает строку string в поток outf. Для обеспечения совместимости со старыми версиями системы процедура puts добавляет в конце символ перевода строки, процедура же fputs не делает этого. Обе функции возвращают в случае ошибки значение EOF. Для осуществления форматированного вывода используются

процедуры printf и fprintf: # include <stdio.h> int printf (const char *fmt, arg1, arg2 … argn); int fprintf (FILE *outf, const char *fmt, arg1, arg2 … argn); Каждая из этих процедур получает строку формата вывода fmt и переменное число аргументов произвольного типа, используемых для формирования выходной строки вывода. В выходную строку выводится информация из параметров arg1 … argn согласно формату, заданному аргументом fmt . В случае процедуры printf эта строка затем копируется в stdout.

Процедура fprintf направляет выходную строку в файл outf. Для каждого из аргументов arg1 … argn должна быть задана своя спецификация формата, которая указывает тип соответствующего аргумента и способ его преобразования в выходную последовательность символов ASCII. Рассмотрим пример, демонстрирующий использование формата процедуры printf в двух простых случаях: int iarg = 34; … printf (“Hello, world! ”); printf (“Значение переменной iarg равно %dn”, iarg);

Результат: Hello, world! Значение переменной iarg равно 34 Возможные типы спецификаций (кодов) формата: Целочисленные форматы: %d - общеупотребительный код формата для значений типа int. Если значение является отрицательным, то будет автоматически добавлен знак минуса; %u - тип unsigned int, выводится в десятичной форме; %o - тип unsigned int, выводится как восьмеричное число без знака; %x - тип unsigned int, выводится как шестнадцатеричное число без знака; %ld -

тип long со знаком, выводится в десятичной форме. Можно также использовать спецификации %lo, %lu, %x. Форматы вещественных чисел: %f - тип float или double, выводится в стандартной десятичной форме; %е - тип float или double, выводится в экспоненциальной форме (для обозначения экспоненты будет использоваться символ е); %g - объединение спецификаций %e и %f - аргумент имеет тип float или double в зависимости от величины числа, оно будет выводиться либо в обычном