Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define _CRT_SECURE_NO_WARNINGS
- #include <stdio.h>
- #include <conio.h>
- #include <string.h>
- int numline(char *fp) {
- char buff;
- int coun = 0;
- while ((buff = fgetc(fp)) != EOF) {
- if (buff == '\n') {
- ++coun;
- }
- }
- return coun + 1;
- }
- char missline(char *fp, int num) {
- char buff;
- int coun = 0;
- while ((buff = fgetc(fp)) != EOF && coun < num) {
- if (buff == '\n') {
- ++coun;
- }
- }
- return buff;
- }
- int main() {
- FILE *fp;
- int counter = 0, num = 0, c = 0;
- char *mode = "r";
- char utility[10], name[10];
- while (counter == 0) {
- printf(">");
- scanf("%s %s", utility, name);
- if ((c = getchar()) == ' ')
- scanf("%d", &num);
- if (strcmp(utility, "./tail") != 0) {
- printf("Error: wrong utility\n");
- if ((fp = fopen(name, mode)) == NULL)
- printf("Error: file isn't available\n");
- if (c != '\n')
- while ((c = getchar()) != '\n');
- }
- else if ((fp = fopen(name, mode)) == NULL) {
- printf("Error: file isn't available\n");
- if (c != '\n')
- while ((c = getchar()) != '\n');
- }
- else
- ++counter;
- }
- if (num == 0) {
- counter = 0;
- char arr[100];
- int i = 0;
- while ((arr[i] = fgetc(fp)) != EOF && counter < 5) {
- if (arr[i] == '\n') {
- arr[i] = '\0';
- printf("%s\n", arr);
- i = 0;
- ++counter;
- }
- else i++;
- }
- arr[i] = '\0';
- printf("%s", arr);
- }
- else {
- char buff = 0;
- counter = numline(fp);
- fseek(fp, 0, SEEK_SET);
- char arr[100];
- int i = 0;
- buff = missline(fp, counter - num);
- counter = 0;
- arr[i] = buff;
- ++i;
- while ((arr[i] = fgetc(fp)) != EOF) {
- if (arr[i] == '\n') {
- arr[i] = '\0';
- printf("%s\n", arr);
- i = 0;
- }
- else i++;
- }
- arr[i] = '\0';
- printf("%s\n", arr);
- }
- _getch();
- fclose(fp);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement