catでテキストの中身を出力し、パイプライン処理で
標準出力及びファイルに出力するプログラムをシステムコールを
使って作成したいのですが・・・例えば
cat foo.txt | ./a.out
というコマンドを入力とすると、foo.txtの中身が標準出力に出力され、
さらにファイルhoge.txtに格納されるという感じです。
コンパイルはできたのですが、実行するとどうしても
”/0=/dzy#”という変な文字しか出力されません。
どこがおかしいのでしょうか?よろしくお願いします。

#define SIZE 100

int main(void){
int n;
int fd;
char buf[SIZE];

creat("hoge.txt",0644);
fd = open("hoge.txt",1);

while(n = read(0, buf, sizeof buf) > 0){
write(1, buf, n);
write(fd, buf, n);
}
close(fd);
return 0;
}