/
MaestroN
/
Eltex_Homework
Обзор
Документация
Войти
/
MaestroN
/
Eltex_Homework
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
Task_7/Task7.1.c
89 строк
3 KB
nikita_shub
Добавление задания 7 финал
08 янв 2025, 20:11
08 янв 2025, 20:11
2659f53
Код
Авторство
О чём код?
/* Напишите программу для чтения и записи в файл Программа должна принимать два аргумента командной строки: имя файла и строку для записи. Открыть файл для записи (создать, если не существует) с правами доступа `0644`. Записать переданную строку в конец файла. Закрыть файл. Затем снова открыть тот же файл для чтения. Прочитать содержимое файла и вывести его на стандартный вывод. Закрыть файл. Убедитесь, что программа корректно обрабатывает ошибки при открытии, записи и чтении файлов (используйте perror() для вывода сообщений об ошибках). Пример использования: ./file_rw setname.txt "Hello, World!" */ #include <fcntl.h> #include <unistd.h> #include <stdio.h> #include <string.h> #include <errno.h> int main(int argc, char *argv[]) { // Проверка количества аргументов if (argc != 3) { fprintf(stderr, " %s <имя файла> <строка для записи>\n", argv[0]); return 1; } const char *filename = argv[1]; const char *data = argv[2]; // Открываем файл для записи, создаём его, если не существует, запись в конец файла int fd = open(filename, O_WRONLY | O_CREAT | O_APPEND, 0644); // Обработка ошибки if (fd == -1) { perror("Ошибка при открытии файла для записи"); return 1; } // Пишем данные в файл ssize_t bytesWritten = write(fd, data, strlen(data)); // Обработка ошибок if (bytesWritten == -1) { perror("Ошибка при записи в файл"); close(fd); return 1; } else if (bytesWritten != (ssize_t)strlen(data)) { fprintf(stderr, "Записались не все данные.\n"); } // Закрываем файл if (close(fd) == -1) { perror("Ошибка при закрытии файла"); return 1; } // Открываем файл для чтения fd = open(filename, O_RDONLY); // Обработка ошибки if (fd == -1) { perror("Ошибка при открытии файла для чтения"); return 1; } // Буфер для считывания данных char buffer[128]; ssize_t bytesRead; // Чтение данных из файла while ((bytesRead = read(fd, buffer, sizeof(buffer) - 1)) > 0) { buffer[bytesRead] = '\0'; // Завершаем строку нулевым символом printf("%s", buffer); // Выводим считанные данные } // Обработка ошибки if (bytesRead == -1) { perror("Ошибка при чтении из файла"); } // Закрываем файл if (close(fd) == -1) { perror("Ошибка при закрытии файла"); return 1; } return 0; }