Задача по книге "Программирование на С"

 
0
 
C++
ava
ShSergey | 19.02.2013, 16:10
Изучаю С по книге "Керниган,Ритчи - Программирование на C.2ed.2009"
Возник вопрос по упражнению 3.2

3.2. Напишите функцию под именем escape (s, t), которая бы  преобразовывала символы наподобие конца строки и табуляции в управляющие  последовательности языка С, такие как \п и \t, в процессе копирования строки t в строку s.  Воспользуйтесь оператором switch.
Напишите функцию также и для противоположной  операции— преобразования символических управляющих последовательностей в фактические управляющие символы.
В книге "К. Тондо, С. Гимпел. Язык Си. Книга ответов" дан ответ на это упражнение


unescape (char s[], char t[] ) {    
    int i, j;
    for (i=j=0; t[i]!='\0'; i++)    {
        if (t[i] != '\\') 
            s[j++] = t[i];        
        else    
            switch (t[i]) {
                case 'n':
                    s[j++] = '\n';
                    break;
                case 't':
                    s[j++] = '\t';
                    break;
                default:
                    s[j++] = '\\';
                    s[j++] = t[i];
                    break;
            }                        
    }
    s[j] = '\0';
}

Мне не понятно как срабатывает 
switch (t[i]) 
 ведь мы на него попадаем когда 
(t[i] == '\\')
 и следовательно
не попадем на 
case 'n':
 и  
case 't:'

Подскажите пожалуйста как работает эта функция
Ответы (1)
ava
baldina | 19.02.2013, 18:37 #
ты прав, никак не срабатывает
должно быть  

switch (t[++i])
Зарегистрируйтесь или войдите, чтобы написать.
Фирма дня
Вы также можете добавить свою фирму в каталог IT-фирм, и публиковать статьи, новости, вакансии и другую информацию от имени фирмы.
Подробнее
Участники
advanced
Отправить