|
|||||||
include <stdio.h>. main(number, names). char *names [ ];. FILE *fp;. long offset = 0L;. if ( fp = fopen(names[l], r)) = = 0). printf (“Я не можу відкрити %s.\n, names[l]);. while ( fseek(fp, offset++, 0) = = 0). putchar(getc(fp));. ⇐ ПредыдущаяСтр 8 из 8 #include <stdio.h> main(number, names) char *names [ ]; { FILE *fp; long offset = 0L; if ( fp = fopen(names[l], "r")) = = 0) printf (“Я не можу відкрити %s.\n", names[l]); else { while ( fseek(fp, offset++, 0) = = 0) { putchar(getc(fp)); if ( fseek(fp, -(offset + 3), 2) = = 0) putchar(getc(fp)); } fclose(fp); } Застосування цієї програми до файлу, що містить ім'я «Мальволио», дає такий приємний результат: Моаилльоввоьллиаом Наша програма друкує перший символ файлу, потім останній, потім друг, що потім передує останньому і т.д. Ми тільки додали от ці рядки в останню програму: if (fseek(fp, - (offset + 3), 2) = = 0) putchar(getc(fp)); Код 2 в операторові припускає, що ми будемо рахувать позиції від кінця файлу. Знак мінус означає рахунок у зворотному напрямку. +3 стоїть тут тому, що ми починаємо з останнього регулярного символу файлу й пропускаємо кілька символів «новий рядок» і EOF у самому кінці файлу. (Точне значення цього коректування залежить від типу системи. Наші файли мають наприкінці по два символи нового рядка, за якими ідуть два EOF, тому ми саме їх і обходимо.) Таким чином, ця частина програми чергує друк у зворотному напрямку й друк в прямому напрямку.
|
|||||||
|