Загрузка [MathJax]/jax/output/HTML-CSS/fonts/TeX/fontdata.js
 

printВвод-вывод

printВывод

Функции ввода-вывода объявляются в заголовочном файле <stdio.h>

По умолчанию ввод-вывод выполняется из консоли, но можно перенаправить на файл:

program.exe <input.txt >output.txt

Если при перенаправлении указать >>, то выводимая программой информация будет добавлена в файл. Ввод и вывод в кодировке unicode возможен только при перенаправлении в файл.

Для вывода используются следующие функции:

для char для wchar_t Назначение
putchar(c) putwchar(wc) Вывод символа
puts(s) Вывод строки с переходом на новую строку
printf(fmt,...) wprintf(wfmt,...) Форматированный вывод

Примеры:

#include <stdio.h>
int main()
{ putchar('A');
  putchar('B');
}
Ввод:

Выполнить
Вывод:
#include <stdio.h>
int main()
{ puts("First line");
  puts("Second line");
}
Ввод:

Выполнить
Вывод:

Для функции printf первым аргументом нужно указать строку, содержащую кроме выводимых символов спецификаторы формата - по одному для каждого следующего аргумента.

В спецификаторе формата после % можно указать (все элементы опциональны):

  • символ - (минус) для выравнивания влево (по умолчанию вправо);
  • символ + или пробел для вывода + или пробела для положительных чисел (по умолчанию ничего);
  • символ # для вывода префикса 0 перед восьмеричными или 0x перед шестнадцатеричными числами (по умолчанию ничего);
  • символ 0 для заполнения 0 (по умолчанию пробелами);
  • минимальную ширину поля для вывода (по умолчанию 0);
  • после . точность для вещественных чисел (по умолчанию 6) и выводимых символов для строк (по умолчанию все).

Вместо конкретного числа для ширины и точности можно написать символ *, тогда значение нужно указать в списке аргументов перед выводимым значением. Если формат x написать как X, то шестнадцатеричные цифры будут выводиться прописными буквами. Аналогично для E и G символ экспоненты будет выводиться как E.

Для вывода символа % в формате нужно указать %%.

При компиляции нужно обращать внимание на предупреждения о несоответствии спецификатора формата и типа аргумента или их количества.

#include <stdio.h>
int main()
{ double x=10.5;
  int z=0x1AB2, n=7,m=3;
  printf("|%-10.2lf|%10.2lf|%.2lf|%lf|%le\n",x,x,x,x,x);
  // |10.50     |     10.50|10.50|10.500000|1.050000e+01
  printf("|%08X|%8x|\n",z,z); // |00001AB2|    1ab2|
  printf("|%*.*lf|\n",n,m,x); // | 10.500|
  printf("|%8.3s|\n","String"); // |     Str|
  printf("|%3s|\n","String"); // |String|
}
Ввод:

Выполнить
Вывод:
loading