Реализация команды Tail -c Linux в C - PullRequest
0 голосов
/ 14 ноября 2018

Мне нужно написать хвост на языке Си, где входной поток будет аргументом в консоли.Функция должна вырезать n символов из входных данных.Командой, вызывающей программу, должна быть «echo» пример текста «| ./a.out 4», то есть будут напечатаны последние 4 символа данного ввода.К сожалению, моя функция ничего не печатает для меня.Заранее спасибо.Если есть другие, более разумные решения, тогда я открыт для предложений.

#include <stdlib.h>
#include <stdio.h>
#include <string.h>

#define BUFFSIZE 1024
#define MAXLINES 100


char* tailFunction (const char* argv[])
{
        char* buf, data;
        int n = 0, i =0;
        buf = malloc(sizeof(char) * MAXLINES);
        n = atoi(argv[0]+1);
        while (data != EOF)
        {
            data = getc(stdin);
            buf[i] = data;
            i++;

        }
        int x = strlen(buf) - n;
        for ( ; x < strlen(buf) ; x++)
        {
            printf("%c", buf[x]);
        }

        free(buf);
        return 0;


}
int main(int argc, const char *argv[])
{
    if (argc !=2)
    {
        return -1;
    }
    if (argv < MAXLINES)
    {
    tailFunction(argv);
    return 0;
    }
    else return -1;
}
...