当前位置:  技术问答>linux和unix

为什么用write向文件写不进去内容?

    来源: 互联网  发布时间:2016-03-09

    本文导语:  函数代码如下: #define NEWFILE (O_WRONLY) int main(void) {   int outfile , temp = 0;   char filename[]={"han.txt"};   char buffer[]={"han"};   if(outfile = open(filename , NEWFILE,S_IRWXU|S_IRWXG|S_IRWXO)== -1)     {       printf("ERROR,OOPEN ...

函数代码如下:
#define NEWFILE (O_WRONLY)

int main(void)
{
  int outfile , temp = 0;
  char filename[]={"han.txt"};
  char buffer[]={"han"};
  if(outfile = open(filename , NEWFILE,S_IRWXU|S_IRWXG|S_IRWXO)== -1)
    {
      printf("ERROR,OOPEN FILE FAILED!n");
     
      exit(255);
    }
  
    {
      
      printf("%d n",sizeof(buffer));
      temp = write (outfile, buffer ,sizeof(buffer));
      if(temp ==-1)
{
  printf("ERROR,WRITE FAILED:n");
  exit(255);
}
      
    }
  printf("file describtion is %d  %d n", outfile, temp );
  
  close(outfile);
  return 0;
}

  为什么代码执行完后,han.txt为0字节,而且程序没有出现任何错误???

  谢谢!

|
楼上在别乱说。
程序我没运行,不过我觉得就是写不进去。
if(outfile = open(filename , NEWFILE,S_IRWXU ¦S_IRWXG ¦S_IRWXO)== -1) 
这条语句什么意思?
那些打开标志不知道什么意思,我就不说了,有个O_RDONLY就够了。假设能打开成功,会将得到的文件描述符和-1比较,比较的结果为0(因为打开成功),然后把0赋值给outfile,后面的write()实际上是往文件描述符为0的文件写入,这应该是标准输入设备吧,大概就是键盘。真没试过这样会有什么效果,呵呵。

楼主一定是C语言没学好,至少要把运算符优先级记个差不多吧。或者是看得代码太少,别人打开文件都是这样的:
if((outfile = open(filename , NEWFILE,S_IRWXU ¦S_IRWXG ¦S_IRWXO))== -1) 
最好是比较是否小于0。

还要批评一下:
char filename[]={"han.txt"};
char buffer[]={"han"}; 
这么写应该是没有错误,不过那两对花括号实在看着不爽。

最后请楼主回复的时候说明一下那几个打开标志的意思,没看明白。

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • C++ I/O 成员 write():写字符
  • generic_file_aio_write_nolock和generic_file_aio_write什么区别啊?
  • java命名空间java.io类outputstream的类成员方法: write定义及介绍
  • [100分求助]预连接:prelink: Could not write /lib/ld-2.5.so: cannot write data to file
  • java命名空间java.io类filteroutputstream的类成员方法: write定义及介绍
  • linux和windows串口问题!?linux向windows端发送,第一次write正常,继续write,windows接收到的就变成乱码了,这是什么原因??????
  • java命名空间java.util.logging类errormanager的类成员方法: write_failure定义及介绍
  • 关于socket中write()函数的问题
  • java命名空间java.io类pipedoutputstream的类成员方法: write定义及介绍
  • Stream.Write 与 StreamWriter.Write 的不同
  • java命名空间java.io接口objectoutput的类成员方法: write定义及介绍
  • 关于write函数的第三个参数的传递
  • java命名空间java.io类randomaccessfile的类成员方法: write定义及介绍
  • 请教:socket编程中send和write的区别
  • java命名空间java.io类stringwriter的类成员方法: write定义及介绍
  • 关于write()和fsync()
  • java命名空间java.io类printwriter的类成员方法: write定义及介绍
  • response.getWriter().write()向前台打印信息乱码问题解决
  • java命名空间java.io类objectoutputstream的类成员方法: write定义及介绍
  • read write ??????????????????
  • java命名空间java.io类chararraywriter的类成员方法: write定义及介绍
  • linux下write调用问题


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3