C Linux - 不写整数

标签 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;

}

有谁知道它会是什么吗?

非常感谢...

最佳答案

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

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

关于C Linux - 不写整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12631460/

相关文章:

c、创建 child 和wait()

c++ - native C/C++ 中衍生进程的标准输入和输出的跨平台重定向(使用解决方案编辑)

c - 打包/解包缓冲区

linux - Linux 中的目录大小。性能问题

linux - "$PWD":/path/to/directory"的含义

java - Runtime#availableProcessors() 在 Linux 服务器上没有返回正确的结果

c++ - C 和 C++ 操作数解析顺序

c - *** 检测到 glibc *** ./bst : munmap_chunk(): invalid pointer: 0xbf91f3d8 *** C Programming

linux - 如何在 Linux 下使用 SWD 对 ARM MCU 进行编程?

linux - 在 oracle 过程中运行 shell 脚本