Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <unistd.h>
- #include <fcntl.h>
- #include <stdlib.h>
- #include <cstdio>
- #include <cstring>
- const int MAX_LIMIT = 10000;
- int main (int argc, char * argv[]) {
- // Проверка количества аргументов. В случае если аргументов меньше, выводим сообщение
- // и завершаем программу
- if (argc < 3) {
- fprintf(stdout, "Usage: writefile [size] [filename]\n");
- return -1;
- }
- // Конвертируем первый аргумент в целое число
- int bufferSize = atoi(argv[1]);
- // Если аргумент некорректный, выводим ошибку и завершаем программу
- if (bufferSize == 0) {
- fprintf(stderr, "Error: incorrect buffer size argument!\n");
- return -1;
- }
- char * filename = argv[2];
- // Проверяем, существует ли файл с заданным названием и если да, выводим ошибку
- if (access (filename, F_OK) == 0) {
- fprintf(stderr, "Error: file %s is already exists!\n", filename);
- return -1;
- }
- // Просим пользователя ввести текст
- char input[MAX_LIMIT];
- printf("Input text: ");
- fgets(input, MAX_LIMIT, stdin);
- // Получаем длину введенного текста
- int lenInput = strlen(input);
- // Присваиваем длину введенной строки размеру буфера
- bufferSize = lenInput;
- // Создаем и открываем файл
- int file = open(filename, O_WRONLY | O_CREAT, 0644);
- // Выводим ошибку в случаи неудачи
- if (file < 0) {
- perror("Error while opening file");
- return -1;
- }
- // Записываем данные в файл
- ssize_t bytesWrite = write(file, input, bufferSize);
- // Выводим ошибку в случае неудачи
- if (bytesWrite < 0) {
- perror("Error while writing file");
- return -1;
- }
- close(file);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement