关于一个open方法的问题

naoh2004 2009-04-09 01:27:20
#include<iostream>
#include<string>
#include "io.h"
#include "fcntl.h"
using namespace std;
#define Error(str) printf("Error : %s\n", str); exit(1);

main()
{
int fd;
char str[20] = "Hello! Test me";

if ((fd = open("xx", O_CREAT | O_RDWR)) < 0)
Error("open failed");

if (write(fd, str, strlen(str)) < 0)
Error("Write failed");
if (read(fd, str, strlen(str)) < 0)
Error("read failed");

printf("File read : %s\n", str);
close(fd);
}

运行输出内容为 空 这是为什么
...全文
69 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
T技术沙龙 2009-04-09
  • 打赏
  • 举报
回复
#include"iostream"
#include"string"
#include"io.h"
#include"fcntl.h"
using namespace std;

#define Error(str) printf("Error:%s\n",str);exit(1);

int main()
{
int fd;
char str[20]="Hello!Test me";

if((fd=open("xx",O_CREAT|O_RDWR))<0)
{
Error("open failed");
}

if(write(fd,str,strlen(str))<0)
{
Error("Write failed");
}

if(read(fd,str,strlen(str))<0)
{
Error("read failed");
}

printf("File read:%s\n",str);
close(fd);
return 0;
}

来晚了,2楼正解,呵呵,楼主从哪学的这种open法啊,请教,谢谢
jame2001 2009-04-09
  • 打赏
  • 举报
回复
不過 我把Error換成printf了...
2樓說的對....
jame2001 2009-04-09
  • 打赏
  • 举报
回复
我試過 並非空....
zhanghuayi_xiyou 2009-04-09
  • 打赏
  • 举报
回复
肯定为空了 ,你的宏定义替换后程序是这样的
if ((fd = open("xx", O_CREAT | O_RDWR)) < 0)
printf("Error : %s\n", "open failed");
exit(1); //这里不在if里面,程序执行直接就结束了。原因:宏函数缺少{}
if()
//。。。


不过打开的宏O_CREAT | O_RDWR倒是挺有意思的。请教请教。。。
ylywyn136 2009-04-09
  • 打赏
  • 举报
回复
这是什么open方法呀,学习

65,210

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧