0

に取り組んでいunix system callsます。を使用して を読み取り、stringstandard input使用read()してファイルに書き込みたいwrite()

openfile 、readfromstringにはできますが、ファイルにはstandard inputできませんwrite

私のコードは:

#include <unistd.h>     // to remove WARNINGS LIKE  warning: implicit declaration of       function ‘read’ , warning: implicit declaration of function ‘write’
#include<fcntl.h>         /* defines options flags */
#include<sys/types.h>     /* defines types used by sys/stat.h */
#include<sys/stat.h>      /* defines S_IREAD & S_IWRITE  */
#include<stdio.h>

int main(void)
 {
 int fd,readd;
 char *buf[1024]; 


    fd = open("myfile",O_RDWR);
    if(fd != -1)
         printf("open error\n");
    else
    {
        // read i\p from stdin , and write it to myfile.txt

            if((readd=read(0,buf,sizeof(buf)))<0)
              printf("read error\n");
            else
             {
                    printf("\n%s",buf);
                    printf("\n%d",readd);
                if(write(fd,buf,readd) != readd)
                      printf("write error\n");

              }
    } 

return 0;
}

出力は

    write error

それは正常に動作していwriteますstringstandard output

質問 :

1) 何が問題なのwrite()ですか?

\n2)行末に改行文字を入れたい。それはどのように可能standard inputですか?

4

2 に答える 2