仅读取一个文件,并使用open()仅写入另一个文件

时间:2019-04-27 08:20:12

标签: c unix compiler-errors file-descriptor

我只需要读取一个文件,而只写入另一个文件。

我试图编写一些代码,但是有很多错误。

有我来了

~/.gist

我得到的一切都是错误:

#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;
}

1 个答案:

答案 0 :(得分:0)

只需听您的编译器:

  • write()系统调用采用文件描述符(类型为int)而不是文件名。但是您正在尝试使用name来调用它。
  • 您的f_write()函数采用两个它不使用的参数-标志和打开模式;您实际上是将其设置为固定值-因此只需删除这些参数即可。