关于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 }