Переделать процедуру, используя функцию fseek - C (СИ)
Формулировка задачи:
нужно процедуру
переделать используя функцию fseek. Помогите пожалуйста
void get_file_content(const char *str1, char *&str2)
{
FILE *dscr=fopen(str1,"r"); - открытие файла для чтения
char buf[65535];
strcpy(buf,"\0"); - копирование в буфер указатель конца файла
strcat(buf,"<p>"); - добавление к буферу тега начала параграфа
while(!feof(dscr)) – цикл пока не конец файла
fread(buf+3,1,sizeof(buf),dscr); - считывание файла (аргументы???)
strcat(buf,"</p>"); - добавление к буферу закрывающего тега
str2=buf;
}Решение задачи: «Переделать процедуру, используя функцию fseek»
textual
Листинг программы
void get_file_content(const char *str1, char *str2)
{
FILE * f = fopen(str1, "rb");
fseek(f, 0, SEEK_END);
long l = ftell(f);
fseek(f, 0, SEEK_SET);
strcpy(str2,"<p>");
fread(str2+strlen("<p>"), 1, l, f);
str2[l+strlen("<p>")] = '\0';
strcat(str2,"</p>");
fclose(f);
}
Объяснение кода листинга программы
- Открывает файл с помощью функции fopen.
- Использует функцию fseek, чтобы переместить указатель чтения в конец файла.
- Использует функцию ftell, чтобы получить текущее положение указателя чтения.
- Снова использует функцию fseek, чтобы переместить указатель чтения в начало файла.
- Копирует строку
<p>в начало второго параметра функции. - Использует функцию fread, чтобы прочитать содержимое файла в оставшуюся часть второго параметра функции.
- Добавляет символ '\0' в конец второго параметра функции, чтобы завершить строку.
- Использует функцию strcat, чтобы добавить строку
</p>в конец второго параметра функции. - Закрывает файл с помощью функции fclose.