/
Roman-git
/
Eltex_tasks
Обзор
Документация
Войти
/
Roman-git
/
Eltex_tasks
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
task_7/task_7.c
99 строк
2 KB
Roman_git
add task 7
26 дек 2024, 12:10
26 дек 2024, 12:10
d6839c8
Код
Авторство
О чём код?
/* Напишите программу для чтения и записи в файл Программа должна принимать два аргумента командной строки: имя файла и строку для записи. Открыть файл для записи (создать, если не существует) с правами доступа `0644`. Записать переданную строку в конец файла. Закрыть файл. Затем снова открыть тот же файл для чтения. Прочитать содержимое файла и вывести его на стандартный вывод. Закрыть файл. Убедитесь, что программа корректно обрабатывает ошибки при открытии, записи и чтении файлов (используйте perror() для вывода сообщений об ошибках). Пример использования: ./file_rw example.txt "Hello, World!" */ #include <fcntl.h> #include <unistd.h> #include <stdio.h> #include <errno.h> #include <stdlib.h> #include <string.h> #define str_length 10 //int task(); int main(int argc, char *argv[]) { //setlocale(LC_ALL,"rus"); if (argc >= 3) { //file = fopen(argv[1], "r"); char *file_name = argv[1]; char *text = argv[2]; int file = open(file_name, O_WRONLY | O_CREAT | O_TRUNC, 0644); if (file == -1) { perror("open error"); return 1; } if (write(file, text, strlen(text)) == -1) { perror("erroe wirte in file"); close(file); return 1; } if (close(file) == -1) { perror("close"); return 1; } file = open(file_name, O_RDONLY); if (file == -1) { perror("open error"); return 1; } char buffer[128]; ssize_t bytesRead; // Чтение данных из файла while ((bytesRead = read(file, buffer, sizeof(buffer) - 1)) > 0) { buffer[bytesRead] = '\0'; // Завершаем строку нулевым символом printf("\n\n%s\n", buffer); // Выводим считанные данные } if (bytesRead == -1) { perror("read"); } if (close(file) == -1) { perror("close"); return 1; } } else { printf("\nEnter %s <file_name> <text>\n", argv[0]); } return 0; }