K&R exercise 3.2 - C (СИ)
Формулировка задачи:
Упражнение 3.2. Напишите функцию escape(s, t), которая при копировании текста из t в s преобразует
такие символы, как новая строка и табуляция в "видимые последовательности символов" (вроде \n и \t).
Используйте инструкцию switch. Напишите функцию, выполняющую обратное преобразование эскейппоследовательностей в настоящие символы.
Аварийный останов программы.
include <stdio.h>
#include <stdlib.h>
int main()
{
int c, i=0;
char t[200], s[200];
printf ("t: ");
while ((c = getchar()) != EOF)
{
t[i] = c;
i++;
}
t[i] = '\0';
escape (s, t);
printf("\ns: ");
for (i = 0; s[i] != '\0'; i++)
{
printf("%c ", s[i]);
}
return 0;
}
void escape (char s[], char t[])
{
int c, i=0;
while ((c = t[i]) != '/0') {
switch (c) {
case '\t': c = '\\t'; break;
case '\n': c = ' \\n'; break;
}
s[i] = c;
i++;
}
}Решение задачи: «K&R exercise 3.2»
textual
Листинг программы
if (NULL==s || NULL==t) return;
Объяснение кода листинга программы
- Проверяется условие, что переменные s и t не равны NULL.
- Если условие не выполняется, то происходит возврат из функции.