Лучший способ сделать это - отправить содержимое div на сервер и открыть новое окно, где сервер может поместить это содержимое в новое окно.
Если это не опция вы можете попытаться использовать язык на стороне клиента, например javascript, чтобы скрыть все на странице, кроме этого div, а затем распечатать страницу ...
Возьмите свой второй пример, т.е.
while ((c = getchar()) != EOF) {
printf("\'\\n\' character in c: %d\n", c == '\n');
}
и разверните цикл. Это станет:
c = getchar();
if (c == EOF) return 0;
printf("\'\\n\' character in c: %d\n", c == '\n');
c = getchar();
if (c == EOF) return 0;
printf("\'\\n\' character in c: %d\n", c == '\n');
c = getchar();
if (c == EOF) return 0;
printf("\'\\n\' character in c: %d\n", c == '\n');
... and so on ...
Теперь сравните это с вашей первой версией, и вы увидите, что разница в том, что второй пример делает вызов getchar
между printf
, тогда как в первом примере есть только один [ 114] вызова.
Другими словами - в первом примере читается только символ 'a'
, в то время как во втором примере сначала читается 'a'
, затем читается '\n'
, а затем читается .... (что бы вы ни печатали дальше)
a
и нажимаете ввод. Буфер stdin будет выглядеть как a
, \n
, два символа. c
, имеет значение 'a'
, которое не равно '\n'
, выход 0. c
имеет значение '\n'
, которое равно '\n'
, выход 1. c
становится EOF
, printf
никогда не выполняется. Вы нажимаете ввод после ввода a
.
Таким образом, ваш входной поток будет иметь «a\n
».
while ((c = getchar()) != EOF) {
Будет считываться, пока не достигнет EOF
, поэтому сначала будет читаться a
, затем \n
(ввод).