UNIX — универсальная среда программирования
UNIX — универсальная среда программирования читать книгу онлайн
В книге американских авторов — разработчиков операционной системы UNIX — блестяще решена проблема автоматизации деятельности программиста, системной поддержки его творчества, выходящей за рамки языков программирования. Профессионалам открыт богатый "встроенный" арсенал системы UNIX. Многочисленными примерами иллюстрировано использование языка управления заданиями
shell.
Для программистов-пользователей операционной системы UNIX.
Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала
6.1 Стандартные входной и выходной потоки: программа
vis
Многие программы читают только из одного входного потока и пишут в один выходной поток: для таких программ полностью подходят функции ввода-вывода, использующие лишь стандартные входной и выходной потоки, и для того чтобы начать работу, этого почти всегда достаточно.
Проиллюстрируем изложенное с помощью программы
vis
nnn
nnn
Vis
vis
$ cat x abc
$ vis < x
abc 10 10 10 ___
$
Чтобы просмотреть несколько файлов с помощью этой элементарной версии
vis
cat
$ cat файл1 файл2 ... | vis
...
$ cat файл1 файл2 ... | vis | grep '\'
...
и избежать тем самым выяснения способа доступа к файлам из программы.
Между прочим, может показаться, что подобную работу следует выполнить с привлечением
sed
'1'
$ sed -n 1 x
abc←←←___
$
Результат выполнения программы
sed
vis
sed
$ sed -n 1 /usr/you/bin
$
(Так получилось на PDP-11; в одной из систем для VAX
sed
sed
Простейшие функции ввода и вывода
getchar
putchar
getchar
putchar(c)
Функция
printf(3)
printf
putchar
scanf(3)
scanf
getchar
Приведем первую версию
vis
/* vis: make funny characters visible (version 1) */
#include <stdio.h>
#include <ctype.h>
main() {
int c;
while ((c = getchar()) != EOF)
if (isascii(c) &&
(isprint(с) || c=='n' || c=='t' || c==' '))
putchar(c);
else
printf("\%03o", c);
exit(0);
}
Getchar
int
char
#include <stdio.h>
должна находиться в начале каждого исходного файла. Это заставляет компилятор Си читать файл макроопределений (
/usr/include/stdio.h
EOF
<stdio.h>
Файл
<ctype.h>
/usr/include
isascii
isprint
<ctype.h>
isalpha(c) | Буква принадлежит алфавиту: a-z A-Z |
isupper(c) | Прописная буква: A-Z |
islower(с) | Строчная буква: a-z |
isdigit(c) | Цифра: 0-9 |
isxdigit(c) | Шестнадцатеричная цифра: 0-9 a-f A-F |
isalnum(c) | Буква или цифра |
isspace(c) | Пробел, символ табуляции, символ перевода строки, символ вертикальной табуляции, символ перевода страницы, символ возврата |
ispunct(c) | Не буквенно-цифровой символ, не управляющий, не пробел |
isprint(c) | Печатаемый: любой графический символ |
iscntrl(c) | Управляющий символ: 0 <= с < 040 || с == 0177 |
isascii(c) | Символ ASCII: 0 <= с <= 0177 |