Программа для копирования файлов: копируется только первый символ - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Доброго время суток, пытаюсь создать программу для копирования файлов. Проблема состоит в том что только первый символ копируется из файла. Может ошибка находится в while-цикле
#include <stdio.h>
#include <fcntl.h>
#include <stdlib.h>
#define BUF_SIZE 512
 
int main() {
 
        int fd_input, fd_output;
        char buffer[512];
        size_t bytes_read, bytes_write;
 
        fd_input = open("new_file.txt",O_RDONLY);
        if (fd_input == -1) {
                perror("open:");
                exit(EXIT_FAILURE);
        }
 
        fd_output = open("copy_file.txt", O_WRONLY|O_CREAT);
        if (fd_output == -1) {
                perror ("open:");
                exit (EXIT_FAILURE);
        }
while (bytes_read = read (fd_input, &buffer, BUF_SIZE)>0)
        {
                bytes_write = write  (fd_output, &buffer, bytes_read);
                if (bytes_write != bytes_read)
                {
                        perror ("read:");
                        exit (EXIT_FAILURE);
                }
        }
 
        close(fd_input);
        close(fd_output);
 
        return 0;
        }

Решение задачи: «Программа для копирования файлов: копируется только первый символ»

textual
Листинг программы
while ((bytes_read = read (fd_input, buffer, BUF_SIZE))>0)

Объяснение кода листинга программы

  1. В цикле while происходит чтение файла с помощью функции read.
  2. Переменная bytes_read содержит количество реально прочитанных байт.
  3. В качестве аргументов функции read переданы:
    • fd_input - дескриптор файла для чтения.
    • buffer - указатель на буфер для чтения данных.
    • BUF_SIZE - размер буфера в байтах.
  4. Условие цикла while - это больше нуля, то есть пока файл не закончился, цикл продолжается.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 4.333 из 5
Похожие ответы