Страницы

Translate

воскресенье, 7 июля 2013 г.

Упражнение 1.10. Напишите программу, копирующую вводимые символы в выходной поток

Упражнение 1.10. Напишите программу, копирующую вводимые
символы в выходной поток с заменой символа табуляции на \t, символа
возврата на \b и каждой обратной наклонной черты на \\. Это сделает
видимыми все символы табуляции и возврата.

#include <stdio.h>
int main()
{
int c;
while((c=getchar()) != EOF)
{
if(c=='\t')
printf("\\t");
if(c=='\b')
printf("\\b");
if(c=='\\')
{
printf("\\");
printf("\\");
}
if(c!='\t' && c!='\b' && c!='\\')
putchar(c);
}
return 0;
}

Результат:



6 комментариев:

  1. Хороший сайт, помогает сверится ) Закончу книгу , сам такой же напишу

    ОтветитьУдалить
  2. не пойму для чего условие последнее где с!='\t' и так далее и для чего if(c=='\\')
    {
    printf("\\");
    printf("\\");
    }, зачем взято в фигурные скобки если он в общем цикле while.

    ОтветитьУдалить
    Ответы
    1. потому что по условию задачи нужно, чтобы ставило \\ ДВЕ черты, а функция printf("\\") ставит только одну, поэтому функции две, чтобы стояло 2 черты. Именно потому что это единый цикл, следующий после if(c=='\\') его поставили в {}

      Удалить
  3. почему нельзя было вместо if(c!='\t' && c!='\b' && c!='\\') просто написать else?

    ОтветитьУдалить
  4. А где ты его тут напишешь? Предлагаешь ко всем if'ам написать? Чепуха получится. К одному if'y? Тоже. Если смог реализовать, то скинь код, аж интересно глянуть.

    ОтветитьУдалить
    Ответы
    1. #include

      int main() {
      int c;

      while ((c = getchar()) != EOF) {
      if (c == '\t') {
      printf("\\t");
      }
      else if (c == '\b') {
      printf("\\b");
      }
      else if (c == '\\') {
      printf("\\\\");
      }
      else {
      putchar(c);
      }
      }

      return 0;
      }

      Удалить