gpt4 book ai didi

c - 使用 open() 只读取一个文件,只写入另一个文件

转载 作者:行者123 更新时间:2023-11-30 19:27:19 25 4
gpt4 key购买 nike

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

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

我来了:

#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

最佳答案

只要听你的编译器:

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

关于c - 使用 open() 只读取一个文件,只写入另一个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55878632/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com