Вопрос задан 22.11.2023 в 17:28. Предмет Информатика. Спрашивает Трошова Кристина.

Помогите, пожалуйста. Нужно написать программу в С. Дан символьный файл. Получить новый файл

состоящий из компонентов первого файла без участка от m-ой до n-ой компонентов ​
0 0
Перейти к ответам

Ответы на вопрос

Внимание! Ответы на вопросы дают живые люди. Они могут содержать ошибочную информацию, заблуждения, а также ответы могут быть сгенерированы нейросетями. Будьте внимательны. Если вы уверены, что ответ неверный, нажмите кнопку "Пожаловаться" под ответом.
Отвечает Потемкин Павел.
#include

void removeSection(FILE *sourceFile, FILE *destinationFile, int m, int n) {
// Получаем длину файла
fseek(sourceFile, 0, SEEK_END);
long fileSize = ftell(sourceFile);
rewind(sourceFile);

// Проверяем корректность значений m и n
if (m < 0 || n >= fileSize || m > n) {
printf("Некорректные значения m и n\n");
return;
}

// Создаем буфер для чтения и записи данных
char buffer[1024];
long bytesRead = 0;
long bytesToSkip = n - m + 1;

// Пропускаем участок между m и n
while (bytesRead < fileSize) {
if (bytesRead < m || bytesRead > n) {
int bytesToRead = sizeof(buffer);
if (bytesToRead > fileSize - bytesRead) {
bytesToRead = fileSize - bytesRead;
}
int bytes = fread(buffer, sizeof(char), bytesToRead, sourceFile);
if (bytes > 0) {
fwrite(buffer, sizeof(char), bytes, destinationFile);
bytesRead += bytes;
} else {
break;
}
} else {
fseek(sourceFile, bytesToSkip, SEEK_CUR);
bytesRead += bytesToSkip;
}
}

printf("Участок успешно удален из файла.\n");
}

int main() {
// Открываем исходный файл
FILE *sourceFile = fopen("input.txt", "r");
if (sourceFile == NULL) {
printf("Не удалось открыть исходный файл.\n");
return 1;
}

// Открываем новый файл для записи
FILE *destinationFile = fopen("output.txt", "w");
if (destinationFile == NULL) {
printf("Не удалось создать новый файл.\n");
return 1;
}

int m = 2; // начальная позиция (индекс)
int n = 5; // конечная позиция (индекс)

removeSection(sourceFile, destinationFile, m, n);

// Закрываем файлы
fclose(sourceFile);
fclose(destinationFile);

return 0;
}
0 0
Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.

Для написания программы на языке C, которая будет создавать новый файл, состоящий из компонентов первого файла без участка от m-ой до n-ой компонентов, вам потребуется использовать функции для работы с файлами и строками в C.

Вот пример программы на языке C, которая выполняет указанную задачу:

```c #include #include #include

void removeComponents(char* inputFile, char* outputFile, int m, int n) { FILE* input = fopen(inputFile, "r"); FILE* output = fopen(outputFile, "w");

if (input == NULL || output == NULL) { printf("Ошибка открытия файлов.\n"); return; }

char line[100]; // Максимальная длина строки в файле int componentCount = 0;

while (fgets(line, sizeof(line), input) != NULL) { componentCount++;

if (componentCount < m || componentCount > n) { fputs(line, output); } }

fclose(input); fclose(output); }

int main() { char inputFile[] = "input.txt"; // Имя исходного файла char outputFile[] = "output.txt"; // Имя нового файла int m = 3; // Номер первой компоненты, которую нужно удалить int n = 5; // Номер последней компоненты, которую нужно удалить

removeComponents(inputFile, outputFile, m, n);

printf("Новый файл успешно создан.\n");

return 0; } ```

В этом примере программа открывает исходный файл с именем "input.txt" и создает новый файл с именем "output.txt". Затем она читает строки из исходного файла и записывает их в новый файл, за исключением компонентов, которые находятся между m-ой и n-ой компонентами. Номера компонентов начинаются с 1.

Чтобы использовать эту программу, вам нужно будет заменить имена файлов "input.txt" и "output.txt" на соответствующие имена в вашей системе. Также вы можете изменить значения переменных m и n в соответствии с вашими требованиями.

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

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

0 0

Похожие вопросы

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос