Написать программу, выводящую на экран несколько строк заданного текстового файла - C (СИ)
Формулировка задачи:
Задание:
Написать программу, выводящую на экран строки с 205 по 215 файла text.txt.
Делать нужно сортировкой, по примеру.
Заранее большое спасибо!
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
int main( int argc, char *argv[] ) {
int fd[2], pid;
int filedes=open( "names.txt", O_RDONLY );
dup2( filedes, fileno(stdin) );
close( filedes );
pipe( fd );
if ((pid = fork()) == 0) { /* Spawn a child */
dup2( fd[1], fileno( stdout ) );
close( fd[0] );
close( fd[1] );
execl( "/usr/bin/sort", "sort", (char *) 0 );
}
else
if (pid > 0) { /* Parent */
dup2( fd[0], fileno( stdin ) );
close( fd[1]); close( fd[0] );
execl( "/usr/bin/uniq", "uniq", (char *) 0 );
}
else {
perror( "fork" );
exit(1);
} /* end if */
} /* main */Решение задачи: «Написать программу, выводящую на экран несколько строк заданного текстового файла»
textual
Листинг программы
#include <stdio.h>
void readRangeLinesFile(char* fileName, int firstPosition, int secondPosition);
void readRangeLinesFile(char* fileName, int firstPosition, int secondPosition) {
FILE* file = fopen(fileName, "r");
char line[256];
int number = 0;
while (fgets(line, sizeof(line), file)) {
//printf("Number: %d ", number);
if (number >= (firstPosition - 1) && number < secondPosition) {
printf("Строка: %s", line);
}
if (number == secondPosition) {
break;
}
number++;
}
fclose(file);
}
int main(int argc, char* argv[]) {
char* fileName = "file/text.txt";
readRangeLinesFile(fileName, 10, 15);
return 0;
}
Объяснение кода листинга программы
- Программа открывает файл с помощью функции fopen().
- Создается переменная типа FILE*, которая будет использоваться для работы с файлом.
- Создается массив типа char с именем line, который будет использоваться для чтения строк из файла.
- Создается переменная типа int с именем number, которая будет использоваться для отслеживания номера текущей строки.
- Запускается цикл while, который будет выполняться до тех пор, пока функция fgets() не вернет значение NULL.
- Внутри цикла while происходит проверка: если номер текущей строки находится в заданном диапазоне (от firstPosition до secondPosition включительно), то строка выводится на экран.
- Если номер текущей строки равен secondPosition, то цикл while прерывается с помощью оператора break.
- После окончания цикла while файл закрывается с помощью функции fclose().
- В функции main() задаются значения переменных fileName, firstPosition и secondPosition.
- Функция readRangeLinesFile() вызывается с заданными аргументами.
- После выполнения функции readRangeLinesFile() программа завершается с возвратом значения 0.