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

Скачать в pdf «Язык программирования C»


hello,


world


hello,


world


hello,


wor:


hello,


world


hello,


world


hello,


world

hello, wor hello, wor


%s:


%10s:


%. 10s: %-10s:


% . 15s:


%-15s:


%15.10s: %-15.10s:


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


printf(s);    /* ОШИБКА, ЕСЛИ s СОДЕРЖИТ % */


printf(«%s», s);    /* БЕЗОПАСНО */


Функция sprintf выполняет те же преобразования, что и printf, но помещает результат вывода в символьную строку:


int sprintf(char *string, char *format, aprl, apr2,    . ..)


Функция sprintf форматирует аргументы aprl, арг2 и т.д. согласно строке формата format, как и раньше, но результат помещается не в поток вывода, а в строку string. Предполагается, что string имеет достаточную для этого длину.


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

7.3. Списки аргументов переменной длины


В этом разделе приводится реализация сильно урезанной, “скелетной” версии printf, которая демонстрирует, как пишутся переносимые функции с обработкой списков аргументов переменной длины. Поскольку здесь нас в основном интересует работа со списком аргументов, функция minprintf будет сама анализировать строку формата и аргументы, а для преобразования данных к выводимой форме вызывать функцию printf.

Скачать в pdf «Язык программирования C»