gpt4 book ai didi

c - 使用 open() 只读和只写

转载 作者:行者123 更新时间:2023-11-30 14:39:49 26 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 main( int argc, char *argv[] ){
if( argc != 2 ){
printf( "Naudojimas:\n %s failas_ar_katalogas\n", argv[0] );
exit( 255 );
}

int fd;

fd = open( argv[1], O_RDONLY );
if(fd == -1){
printf("Nepavyko atidaryti skaitymui.\n");
exit(1);
}
else {
printf( "Failas %s skaitymui atidarytas.\n", argv[1] );
}

int fd1;

fd1 = open( argv[2], O_WRONLY | O_CREAT | O_TRUNC, 0644 );
if(fd1 == -1){
printf("Nepavyko atidaryti rasymui.\n");
exit(1);
}
else {
printf( "Failas %s rasymui atidarytas.\n", argv[2] );
}

return 0;
}

如果我只写一个参数,那么我会得到第一个文件成功打开的输出,但如果我输入两个参数,我不会得到输出。

预期结果:第一个参数中提到的文件以只读方式打开,第二个参数中提到的文件以只写方式打开(p.s.如果没有第二个参数的文件,则应该创建它(如果存在) ,只需从中删除数据即可。)

最佳答案

您的argc检查是错误的。 argc的值是 argv 中有效元素的数量数组,包括 argv[0] 中的“命令” 。如果有两个参数,则 argc 的值将是3 .

这应该很容易看到,主要是因为如果您向程序提供了两个参数,那么应该已经写入有关它的错误消息。如果您使用了调试器,那么这也应该很明显。

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

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