Простая задача на С - C (СИ) (155887)
Формулировка задачи:
Написать программу которая в начальной директории ищет все .txt файлы и объединяет их в один. Нужна очень срочно...
Решение задачи: «Простая задача на С»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> #include <windows.h> void append_to_file(FILE *from, FILE *to) { int ch; while (1) { ch = fgetc(from); if (ch == EOF) break; fputc(ch, to); } } int main(int argc, char *argv[]) { WIN32_FIND_DATA findFileData; FILE *fileFrom, *fileTo; HANDLE hFind; wchar_t current_directory[MAX_PATH]; wchar_t txt_files[MAX_PATH + 6]; if (argc != 2) { fputs("The number of arguments must be equal to 2", stderr); exit(1); } GetCurrentDirectory(MAX_PATH, current_directory); wcscpy(txt_files, current_directory); wcscat(txt_files, L"\\*.txt"); hFind = FindFirstFile(txt_files, &findFileData); if(hFind == INVALID_HANDLE_VALUE) { printf("%ls", txt_files); fputs("Can not find text files", stderr); exit(1); } fileTo = fopen(argv[1], "wb"); if (!fileTo) { fprintf(stderr, "Could not open %s file", argv[1]); exit(1); } do { fileFrom = _wfopen(findFileData.cFileName, L"rb"); if (!fileFrom) { fprintf(stderr, "Could not open %ls file", findFileData.cFileName); exit(1); } else append_to_file(fileFrom, fileTo); } while(FindNextFile(hFind, &findFileData)); fclose(fileFrom); fclose(fileTo); FindClose(hFind); return 0; }
Объяснение кода листинга программы
- Создание копии исходного файла с помощью функции
append_to_file()
. - Объявление функции
append_to_file()
, которая считывает символ из исходного файла и записывает его в целевой файл. - Объявление функции
main()
, которая обрабатывает ввод/вывод и управляет процессом копирования. - Проверка корректности входных данных (должно быть передано ровно 2 аргумента).
- Получение текущего каталога с помощью функции
GetCurrentDirectory()
. - Формирование строки
txt_files
, которая содержит маску для поиска всех текстовых файлов в текущем каталоге. - Поиск первого файла, соответствующего маске, с помощью функции
FindFirstFile()
. - Открытие целевого файла для записи с помощью функции
fopen()
. - Проверка корректности открытия целевого файла.
- В цикле до тех пор, пока есть файлы, соответствующие маске:
10.1. Открытие текущего файла для чтения с помощью функции
_wfopen()
. 10.2. Проверка корректности открытия текущего файла для чтения. 10.3. Копирование содержимого текущего файла в целевой файл с помощью функцииappend_to_file()
. - Закрытие текущего файла.
- Вызов функции
FindNextFile()
для поиска следующего файла, соответствующего маске. - Закрытие целевого файла.
- Закрытие дескриптора поиска.
- Возврат 0, что означает успешное выполнение программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д