Чтение только одного файла и запись только другого с помощью open () - PullRequest
0 голосов
/ 27 апреля 2019

Мне нужно прочитать только один файл и записать только другой файл.

Я пытался написать какой-то код, но ошибок много.

Вот мой пришел:

#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>

int f_open(const char *name);
int f_write(const char *name, int oflag, mode_t mode);


int f_open(const char *name){
   int dskr;
   dskr = open( name, O_RDONLY );
   if( dskr == -1 ){
      perror( name );
      exit(1);
   }
   printf( "dskr = %d\n", dskr );
   return dskr;
}

int f_write(const char *name, int oflag, mode_t mode){
   int dskr;
   dskr = write( name, O_WRONLY | O_CREAT | O_TRUNC, 0644 );
   if( dskr == -1 ){
      perror( name );
      exit(1);
   }
   printf( "dskr = %d\n", dskr );
   return dskr;
}

int main( int argc, char *argv[] ){
   int d;
   int f;
   if( argc != 2 ){
      printf( "Naudojimas:\n %s failas_ar_katalogas\n", argv[0] );
      exit( 255 );
   }
   d = f_open( argv[1] );
   f = f_write( argv[2] );
   return 0;
}

Все, что я получил, это ошибки:

edgals_rw01.c: In function ‘f_write’:
edgals_rw01.c:29:4: warning: passing argument 1 of ‘write’ makes integer from pointer without a cast
/usr/include/unistd.h:532:16: note: expected ‘int’ but argument is of type ‘const char *’
edgals_rw01.c:29:4: warning: passing argument 2 of ‘write’ makes pointer from integer without a cast
/usr/include/unistd.h:532:16: note: expected ‘const void *’ but argument is of type ‘int’
edgals_rw01.c: In function ‘main’:
edgals_rw01.c:54:4: error: too few arguments to function ‘f_write’
edgals_rw01.c:27:5: note: declared here

1 Ответ

0 голосов
/ 27 апреля 2019

Просто слушайте ваш компилятор:

  • Системный вызов write() принимает дескриптор файла (который имеет тип int), а не имя файла.Но вы пытаетесь назвать это с name.
  • Ваша функция f_write() принимает два параметра, которые она не использует - флаги и режим открытия;вы на самом деле устанавливаете их на фиксированные значения - просто отбросьте эти параметры.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...