2

我不知道为什么在将整数写入文件时总是遇到麻烦。

这是代码:

#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;

}

有谁知道会是什么?

非常感谢...

4

2 回答 2

7

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

ps你想要close(fd)在你的if (fd > 0) {块内。此外,从技术上讲,唯一的错误返回open-1. 所有其他值(正、零、负)都是成功的。

于 2012-09-27T23:24:54.887 回答
0

从您的评论来看,它 100% 正确工作:P恰好是十进制 80。

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

您可能想要查看fopenfprintf作为一种简单的方法来获得您所期望的外观。

于 2012-09-27T23:26:23.593 回答