关于open和write函数

  昨晚花了写了一个open和write函数的练习

 #include<fcntl.h>
  3 #include<unistd.h>
  4 int main(void){
  5         int fp  = 0;
  6         char buf[] =  "hello word!";
  7         if((fp=open("demo",O_WRONLY)) == -1){     //主要问题出现在这里
  8                 err_sys("openfile err!");
  9         }
 11         printf("%d\n",fp);
 12         lseek(fp,0,SEEK_END);
 13         if((write(fp,buf,(sizeof(buf)-1))) != (sizeof(buf)-1))
 14                 err_sys("write err!");
 15         printf("%d\n",sizeof(buf));
 16         close(fp);
 17         return 0;
 18 }

  直接上代码  出现主要问题的哪里  缺少一个括号的时候open函数一直返回一个0  也就是stdin 造成了一直向屏幕输出  还有就是  write函数  输出的时候完成后有一个乱码 我使用od 命令查看了内部并没有发现有什么多余的  后面想到字符串/0做结尾表示   所以在buf 长度计算后 -1    主要还是一些 细节方面的问题   这里仅作一个个人的简单总结

下面这个就是我的问题代码

 #include<fcntl.h>
  3 #include<unistd.h>
  4 int main(void){
  5         int fp  = 0;
  6         char buf[] =  "hello word!";
  7         if(fp=open("demo",O_WRONLY) ==  -1){     //主要问题出现在这里    优先级个人我的理解不够  造成了语义不明确
  8                 err_sys("openfile err!");
  9         }
 11         printf("%d\n",fp);
 12         lseek(fp,0,SEEK_END);
 13         if((write(fp,buf,sizeof(buf))) != sizeof(buf))
 14                 err_sys("write err!");
 15         printf("%d\n",sizeof(buf));
 16         close(fp);
 17         return 0;
 18 }

 

posted @ 2016-04-20 20:08  依旧如此  阅读(854)  评论(0编辑  收藏  举报