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