LINUX.ORG.RU

Копирование файлов...


0

0

Вот программка, которая должна копировать содержимое из одного файла в другой. Вопрос : почему она не работает???
Заранее благодарен...
============cut==============
#include <fcntl.h>
#include <unistd.h>
#define BUFSIZE 512

int inf, outf;
main()
{
  char buffer[BUFSIZE];
  ssize_t nread;
  off_t offset;

  char *infile="infile.txt";
  char *outfile="outfile.txt";

  if( inf = open(infile, O_RDONLY) == -1) 
    {
      printf("Ошибка! Не могу открыть файл '%s'\n", infile);
      exit(1);
    }  

  if( outf = open(outfile, O_WRONLY|O_CREAT|O_TRUNC, 0644) == -1)
    {
      close(inf);
      printf("Ошибка! Не могу открыть файл '%s'\n", outfile);
      exit(2);
    }

  while ( (nread = read(inf,buffer, BUFSIZE)) > 0)
    {
      if( write(outf, buffer, nread) < nread)
        {
          printf("Ошибка! Не могу выполнить перезапись\n");
          exit(3);
        }
    }

  close(inf);
  close(outf);

  if (nread == -1)
    {
       printf("Ошибка при последнем чтении\n");
       exit(4);
    }
}
============end==============

man 2 read:

Если  количество  прочитанных  байт  меньше,  чем
       количество запрошенных, то это не считается ошибкой: например, мы могли
       читать  вблизи  конца  файла,  или же из трубы, или с терминала, или же
       read() был прерван сигналом.

Keiko
()
Ответ на: комментарий от Keiko

хотя нет. дело не в этом. во первых, exit-ты замени на return-ы.во вторых, расставь скобки во всех if-ах вокруг опеерации =.

Keiko
()

Надо так if( (inf = open(infile, O_RDONLY)) == -1) и соответсвенно if( (outf = open(outfile, O_WRONLY|O_CREAT|O_TRUNC, 0644)) == -1)

krum
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.