Бьерн Страуструп.
Язык программирования С++
281
c Символьный параметр печатается. Нулевые символы игнорируются;
s Параметр считается строкой (символьный указатель), и печатаются символы из строки до
нулевого символа или до достижения числа символов, равного спецификации точности; но,
если точность равна 0 или не указана, печатаются все символы до нулевого;
p Параметр считается указателем и его вид на печати зависит от реализации;
u Беззнаковый целый параметр печатается в десятичной записи.
Несуществующее поле или поле с шириной, меньшей реальной, приведет к усечению поля. Дополнение
пробелами происходит, если только спецификация ширины поля больше реальной ширины. Ниже
приведен более сложный пример:
char* src_file_name;
int line;
char* line_format = "\n#line %d \"%s\"\n";
main()
{
line = 13;
src_file_name = "C++/main.c";
printf("int
a;\n");
printf(line_format,line,src_file_name);
printf("int
b;\n");
}
в котором печатается
int a;
#line 13 "C++/main.c"
int b;
Использование printf() ненадежно в том смысле, что нет никакого контроля типов. Так, ниже приведен
известный способ получения неожиданного результата - печати мусорного значения или чего похуже:
char x;
// ...
printf("bad input char: %s",x);
Однако, эти функции обеспечивают большую гибкость и знакомы программирующим на С.
Как обычно, getchar() позволяет знакомым способом читать символы из входного потока:
int i;:
while ((i=getchar())!=EOF) { //
символьный ввод C
// используем i
}
Обратите внимание: чтобы было законным сравнение с величиной EOF типа int при проверке на конец
файла, результат getchar() надо помещать в переменную типа int, а не char.
За подробностями о вводе-выводе на С отсылаем к вашему руководству по С или книге Кернигана и
Ритчи "Язык программирования С".
Достарыңызбен бөлісу: