我只需要打开一个文件即可读取并注释写入-仅写入。
有我的代码:
#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;
}
如果我只写一个参数,那么我得到的结果是第一个文件成功打开,但是如果我输入两个参数,我就不会输出。
预期结果:在第一个参数中提到的文件以只读方式打开,在第二个参数中提及的文件以只读方式打开(ps,如果没有带第二个参数的文件,则应创建它(如果存在) ,只需从中删除数据即可。)
答案 0 :(得分:1)
您的argc
检查不正确。 argc
的值是argv
数组中有效元素的数量,其中包括 argv[0]
中的“命令”。如果有两个参数,则argc
的值为3
。
这应该很容易看到,主要是因为如果您向程序提供了两个参数,则应该编写有关该程序的错误消息。而且,如果您使用调试器,那么它也应该很明显。