Добавил:
alex20000
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:sem9_1
.c#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;
}
Соседние файлы в предмете Информатика