Advertisement
steluxa

Untitled

Feb 24th, 2022
36
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.00 KB | None | 0 0
  1. #include <unistd.h>
  2. #include <fcntl.h>
  3. #include <stdlib.h>
  4. #include <cstdio>
  5. #include <cstring>
  6.  
  7. const int MAX_LIMIT = 10000;
  8.  
  9. int main (int argc, char * argv[]) {
  10. // Проверка количества аргументов. В случае если аргументов меньше, выводим сообщение
  11. // и завершаем программу
  12. if (argc < 3) {
  13. fprintf(stdout, "Usage: writefile [size] [filename]\n");
  14. return -1;
  15. }
  16.  
  17. // Конвертируем первый аргумент в целое число
  18. int bufferSize = atoi(argv[1]);
  19. // Если аргумент некорректный, выводим ошибку и завершаем программу
  20. if (bufferSize == 0) {
  21. fprintf(stderr, "Error: incorrect buffer size argument!\n");
  22. return -1;
  23. }
  24.  
  25. char * filename = argv[2];
  26. // Проверяем, существует ли файл с заданным названием и если да, выводим ошибку
  27. if (access (filename, F_OK) == 0) {
  28. fprintf(stderr, "Error: file %s is already exists!\n", filename);
  29. return -1;
  30. }
  31.  
  32. // Просим пользователя ввести текст
  33. char input[MAX_LIMIT];
  34. printf("Input text: ");
  35. fgets(input, MAX_LIMIT, stdin);
  36.  
  37. // Получаем длину введенного текста
  38. int lenInput = strlen(input);
  39.  
  40. // Присваиваем длину введенной строки размеру буфера
  41. bufferSize = lenInput;
  42.  
  43. // Создаем и открываем файл
  44. int file = open(filename, O_WRONLY | O_CREAT, 0644);
  45.  
  46. // Выводим ошибку в случаи неудачи
  47. if (file < 0) {
  48. perror("Error while opening file");
  49. return -1;
  50. }
  51.  
  52. // Записываем данные в файл
  53. ssize_t bytesWrite = write(file, input, bufferSize);
  54. // Выводим ошибку в случае неудачи
  55. if (bytesWrite < 0) {
  56. perror("Error while writing file");
  57. return -1;
  58. }
  59.  
  60. close(file);
  61.  
  62. return 0;
  63. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement