dポイントプレゼントキャンペーン実施中!

宜しくお願い致します。Windows2000でCygwinを使用しています。

$ cat test6.c
#include<stdio.h>
int main(void){
FILE *fp1,*fp2;
fp1=fopen("file.txt","w");
fp2=fopen("file.txt","a");
printf("fp1->fd=%d\n",fileno(fp1));
printf("fp2->fd=%d\n",fileno(fp2));
write("first",fileno(fp1),2);
write("second",fileno(fp2),2);
return 0;
}

$ gcc -o test6 test6.c

$ test6
fp1->fd=3
fp2->fd=4

$ cat ./file.txt

となり、
file.txtに"first"と"second"が出力されるとかと思いましたが空ファイルです。
これは何が原因なのでしょうか?

A 回答 (2件)

write関数の使い方が間違っているのでは。


またわざわざfopenで開いてfilenoを使ってファイルハンドル番号を取得する意味もよくわかりません。無駄ではないですか。
    • good
    • 0
この回答へのお礼

有難うございます。

> write関数の使い方が間違っているのでは。
$ cat test6.c
#include<stdio.h>
int main(void){
FILE *fp1,*fp2;
fp1=fopen("file.txt","w");
fp2=fopen("file.txt","a");
printf("fp1->fd=%d\n",fileno(fp1));
printf("fp2->fd=%d\n",fileno(fp2));
write(fileno(fp1),"first\n",6);
write(fileno(fp2),"second\n",7);
fclose(fp1);
return 0;
}

$ gcc -o test6 test6.c

$ test6est6.ctxtest6.c
fp1->fd=3
fp2->fd=4

$ gcc -o test6 test6.c

$ test6
fp1->fd=3
fp2->fd=4

$ cat ./file.txt
first
second

となりました。

> またわざわざfopenで開いてfilenoを使ってファイルハンドル番号を取得する意味も
> よくわかりません。無駄ではないですか。
そういわれればそうですね。

お礼日時:2005/03/08 16:28

write関数の使い方が間違っているのでは。


またわざわざfopenで開いてfilenoを使ってファイルハンドル番号を取得する意味もよくわかりません。無駄ではないですか。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!