テキストファイルが開けません。
main関数に2つの引数をとり、第1引数で指定したファイルの内容を第2引数で指定したファイルにコピーするプログラムを以下のように作りました。
#include<stdio.h>
#include<fcntl.h>
int main(int argc, char* argv[]){
int fd1, fd2, rs, ws;
char buffer[10000];
if(argc!=3){
write(2, "使用法:実行ファイル コピー元ファイル コピー先ファイル\n", 54);
exit(1);
}
fd1=open(argv[1], O_RDONLY);
if(fd1<0){
fprintf(stderr, "can't open file '%s'.\n", argv[1]);
exit(1);
}
fd2=open(argv[2], O_WRONLY|O_CREAT|O_TRUNC);
if(fd2<0){
fprintf(stderr, "can't open file '%s'.\n", argv[2]);
exit(1);
}
while((rs=read(fd1, buffer, 10000))>0){
if((ws=write(fd2, buffer, rs))!=rs){
write(2, "an error occurred while copying.\n");
exit(1);
}
}
close(fd1);
close(fd2);
}
コンパイル、実行ともに正常終了したのですが、
コピー先のテキストファイルを開こうとすると、
「アクセスは拒否されました。」というダイアログが表示されて
開くことができません。
なぜなのでしょうか。
よろしくお願いします。
ちなみにOSはWindows Vistaで、
プログラムはcygwin上で実行しました。
補足
直接ファイル名を指定しない理由があります。 例えばファイル名が毎月変わるとき、openのみ変更すればいいのと、 ファイルの読み書きごとにファイル名を指定していると それを全部直さないといけないですよね。 ここをもう少し分かりやすく教えていただけると助かります。すみません。