Написать программу, выводящую на экран несколько строк заданного текстового файла - 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.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д