UNIX — универсальная среда программирования
UNIX — универсальная среда программирования читать книгу онлайн
В книге американских авторов — разработчиков операционной системы UNIX — блестяще решена проблема автоматизации деятельности программиста, системной поддержки его творчества, выходящей за рамки языков программирования. Профессионалам открыт богатый "встроенный" арсенал системы UNIX. Многочисленными примерами иллюстрировано использование языка управления заданиями
shell.
Для программистов-пользователей операционной системы UNIX.
Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала
Таблица 6.3: Некоторые определения из <stdio.h>
Теперь вернемся снова к нашей теме и напишем третью версию
vis/* vis: make funny characters visible (version 3) */#include <stdio.h>#include <ctype.h>int strip = 0; /* 1 => discard special characters */main(argc, argv) int argc; char *argv[];{ int i; FILE *fp; while (argc > 1 && argv[1][0] == '-') { switch (argv[1][1]) { case 's': /* -s: strip funny chars */ strip = 1; break; default: fprintf(stderr, "%s: unknown arg %sn", argv[0], argv[1]); exit(1); } argc--; argv++; } if (argc == 1) vis(stdin); else for (i = 1; i < argc; i++) if ((fp=fopen(argv[i], "r")) == NULL) { fprintf(stderr, "%s: can't open %sn", argv[0], argv[i]); exit(1); } else { vis(fp); fclose(fp); } exit(0);}В программе принято соглашение, по которому флаги стоят в начале списка аргументов. После обработки каждого флага
argvargcvisgetopt(3)Процедура
visvis(fp) /* make chars visible in FILE *fp */ FILE *fp;{ int c; while ((с = getc(fp)) != EOF) if (isascii(c) && (isprint(с) || c=='n' || c=='t' || c==' ')) putchar(c); else if (!strip) printf("\%03o", c);}Функция
fprintfprintfФункция
fclosefopenprintfputcfclosefcloseexitmainСтандартный поток
stderrstdinstdoutstderrVisstderrstdoutМы решили, отчасти произвольно, что
visНапишите программу
printable$ pr `printable *` | lprДобавьте флаг
-vgrepprintable
