Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

sem9_1

.c
Скачиваний:
0
Добавлен:
29.05.2019
Размер:
1.38 Кб
Скачать
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char** argv)
{
 if((argc != 2) && (argc != 3))//кол-во аргументов должно быть 2 или 3
 {
  puts("usage: tail <filename> <number of lines>");
  return 0;
 }
 FILE* f = fopen(argv[1], "r");//открываем файл
 if(argc == 2)//если 2 аргумента - вывести содержимое файла
 {
  int c = 0;
  do
  {
   putchar(c);
   c = fgetc(f);
  }while(c != EOF);
 }
 else//если 3 аргумента - вывести последние lines_to_print строк
 {
  int c = 0;
  int lines_count = 0;
  do
  {
   c = fgetc(f);
   if(c == '\n')
    lines_count++;//сначала подсчитываем кол-во строк
  }while(c != EOF); 
  fseek(f, 0, SEEK_SET);//перезодим в начало файла 
  c = 0;
  int lines_to_print = atoi(argv[2]);//берем кол-во строк из аргументов
  do
  {
   if(lines_count <= lines_to_print)//начиная с момента, когда достигли строки,которую надо вывести, выводим все символы
    putchar(c);
   if(c == '\n')
    lines_count--;//уменьшаем кол-во строк если увидели переход на новуб строку
   c = fgetc(f);
  }while((c != EOF) && (lines_count > 0)); 
 }
 return 0;
}
Соседние файлы в предмете Информатика