Из записанных в файл 5 строк, нужно считать и вывести на экран третью - C (СИ)
Формулировка задачи:
Проблема в том, что из записанных в файл 5 строк, нужно считать и вывести на экран третью.
Спасибо.
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
int main()
{
setlocale(LC_ALL, "Rus");
int i;
FILE *fp;
if ((fp=fopen("FILE1.TXT","w"))==NULL)
printf("Файл не открыт\n");
else
{
printf("Файл открыт\n");
for (i=0;i<5;i++)
fprintf(fp, "Строка %d\n", i);
fclose(fp);
}
return 0;
}Решение задачи: «Из записанных в файл 5 строк, нужно считать и вывести на экран третью»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <locale.h>
#define D "\n\r"
int main(void)
{
setlocale(LC_ALL,"Ru");
char *a,*c;
long int l=0;
int i=0;
FILE *fp;
if ((fp=fopen("C:/out.txt","rb"))==NULL)
printf("Файл не открыт\n");
else
{
fseek(fp,0,SEEK_END);
l=ftell(fp);
fseek(fp,0,SEEK_SET);
a=(char*)malloc(sizeof(char)*l);
fread(a,sizeof(char),l,fp);
for(c=strtok(a,D);c!=NULL;c=strtok(NULL,D))
{
i++;
if(i==3)
{
printf("%s\n",c);
break;
}
}
fclose(fp);
free(a);
}
return(0);
}
Объяснение кода листинга программы
- Подключение необходимых библиотек для работы с файлами и строками
- Определение символа новой строки
- Установка русской локали для вывода
- Объявление переменных: a, c, l (long int), i (int), fp (FILE*)
- Проверка на открытие файла с помощью функции fopen()
- Если файл успешно открыт, выполняется блок кода
- Переход в конец файла с помощью функции fseek()
- Определение размера файла с помощью функции ftell()
- Возвращение в начало файла с помощью функции fseek()
- Выделение памяти под строку с помощью функции malloc()
- Чтение содержимого файла в выделенную память с помощью функции fread()
- Разделение содержимого файла на строки с помощью функции strtok()
- Пропускание первых двух строк с помощью функции strtok()
- Вывод третьей строки на экран с помощью функции printf()
- Закрытие файла с помощью функции fclose()
- Освобождение выделенной памяти с помощью функции free()
- Возврат значения 0, что означает успешный исход программы