Таблица 6.4: Полезные стандартные функции ввода-вывода
Модифицируйте
zapzapgetpid(2)Постройте
fgrep(1)strindexfgrep6.8 Диалоговая программа сравнения файлов:
idiffПоддерживать две чем-то отличающиеся версии файла, каждая из которых содержит часть нужного вам файла, довольно распространенная проблема. Зачастую она возникает в тех случаях, когда изменения вносятся независимо двумя разными людьми. Программа
diffВ этом разделе мы напишем программу
idiffdiffdiffidiffidiff.out<b>file1: file2:</b>This is This isa test not a testof ofyour ourskill ability.and comprehension.diff$ diff file1 file22c2< a test---> not a test4,6c4,5< your< skill< and comprehension.---> our> ability.$Диалог с
idiff$ idiff file1 file22c2< a test---> not a test? > 4,6с4,5 < your< skill< and comprehension.---> our> ability.? < idiff output in file idiff.out$ cat idiff.out This isnot a test ofyour skilland comprehension.$Если вместо
<>еidiffedеyourskilland comprehension.---ourability.Все, что пишется редактором обратно в файл, идет в окончательный выходной поток.
И, наконец, любая команда может быть выполнена внутри
idiffТехнически самая трудная часть работы
diffidiffdiffidiffdiff/* idiff: interactive diff */#include <stdio.h>#include <ctype.h>char *progname;#define HUGE 10000 /* large number of lines */main(argc, argv) int argc; char *argv[];{ FILE *fin, *fout, *f1, *f2, *efopen(); char buf[BUFSIZ], *mktemp(); char *diffout = "idiff.XXXXXX"; progname = argv[0]; if (argc != 3) { fprintf(stderr, "Usage: idiff file1 file2\n"); exit(1); } f1 = efopen(argv[1], "r"); f2 = efopen(argv[2], "r");