C Linux - 不写整数

时间:2012-09-27 23:20:21

标签: c linux

我不知道为什么我一直在为文件写一个整数而遇到麻烦。

以下是代码:

#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <string.h>

int main (int argc, char* argv[]) {


  int fd, w;
  int num=80;

  fd=open ("file3.txt", O_CREAT|O_WRONLY, 0777);

  if (fd>0) {

    w=write (fd, &num, sizeof (int));

        if (w==-1) {

          printf ("Writing Error \n");
          return EXIT_FAILURE;

    }

  }

  close (fd);
  return EXIT_SUCCESS;

}

有谁知道它会是什么?

非常感谢...

2 个答案:

答案 0 :(得分:7)

您正在将二进制值写入文件,而不是ascii。如果你想在文件中使用ascii,你需要sprintf首先到char缓冲区,然后write char缓冲区。或者使用fopen而不是open打开您的文件,然后使用fprintf

P.S。您想要close(fd)块内的if (fd > 0) {。另外,从技术上讲,open的唯一错误回报是-1。所有其他值(正,零,负)都是成功的。

答案 1 :(得分:0)

根据您的评论,它正常工作:P恰好是十进制80。

write()输出整数的字节而不是十进制表示。

您可能希望将fopenfprintf视为获得您期望的样子的简单方法。