Как быстро считать данные с файла с определенного места? Здравствуйте У меня возник вопрос касательно считывания данных с файла В моем файле все данные записаны в одну строку без лишних разделителей и т.д. (например простой текст, "было утро. я пошел в лес.") Я знаю позицию начала каждого предложения в этом файле (и длину предложения тоже): предложение 1->начало->0, длина->10; предложение 2->начало->12, длина->14 Как мне на С быстро считать данные с нужной позиции? Идти циклом по символам не самый лучший вариант, так как файл может содержать очень много данных и это скажется на времени Есть ли какой-то способ считывать данные с файла с нужной позиции на С? Либо может есть какие-либо идеи или аналоги того, как можно это реализовать?

29 Мая 2021 в 20:06
449 +1
1
Ответы
1

Для быстрого считывания данных с файла с определенной позиции на языке C вы можете использовать функцию fseek() в комбинации с fread().

Пример кода может выглядеть следующим образом:

#include <stdio.h>
int main() {
FILE *file = fopen("file.txt", "r");
if (file == NULL) {
perror("Error opening file");
return 1;
}
fseek(file, 12, SEEK_SET); // Перемещаем указатель файла на позицию 12
char buffer[15]; // Размер буфера должен быть равен длине предложения + 1 для завершающего нуля
if (fread(buffer, 1, 14, file) != 14) {
perror("Error reading from file");
return 1;
}
buffer[14] = '\0'; // Добавляем завершающий нуль
fclose(file);
printf("%s\n", buffer);
return 0;
}

Этот код открывает файл "file.txt", перемещает указатель файла на позицию 12 и считывает 14 символов в буфер. Пожалуйста, обратите внимание, что размер буфера должен быть равен длине предложения + 1 для символа конца строки ('\0').

Надеюсь, это поможет вам решить вашу проблему считывания данных с файла с определенной позиции на языке C.

17 Апр 2024 в 17:50
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир